Você está na página 1de 1

Para mensionar a programao orientada a objetos (POO), primeiramente, faz-se necessr

io viajarmos no tempo. Sendo assim, o senhor Thiago Vincius (expert em Java e pro
gramao web), num artigo publicado no "site" DEVMEDIA, divide a programao em trs eras:
a era do caos (1950-1960), a era da estruturao (1980-1990) e a era dos objetos. N
a primeira era, as variveis no estruturadas espalhavam-se pelo programa, acontecia
m saltos e gotos (comandos de saltos de instrues); na era da estruturao, entretanto,
surge o "if-then-else", blocos, registros e "laos-while", ou seja, a estruturao da
linguagem de programao; finalmente, somente a partir de 1990, tivemos o incio da e
ra dos objetos, onde os conceitos de objetos, mensagens, mtodos e herana tomaram c
onta da programao moderna at os dias de hoje. Porm, registre-se como fato: esses con
ceitos da terceira era surgiram na verdade com as linguagens "Simula 67" (por Ol
e Johan Dahl e Kristen Nygaard) em 1997, que por sua vez serviram de ponto de pa
rtida para o desenvolvimento da primeira linguagem de programao orientada a objeto
s - a "Smalltalk, liderada pela equipe de Alan Kay, na Xerox PARC, em 1972, como
consta no site "merlintec.com/swiki/smalltalk".
Antes da comparao entre a linguagem Java e a linguagem C#, uma escolha pessoal, j q
ue esta nasceu em competio a outra, cumpre entender um pouco a linguagem Java. Cla
sses, objetos, atributos, mtodos e construtores so elementos de Java, assim como d
as demais POOs, salvo algumas diferenas que sero posteriormente vistas. As classes
esto submetidas ao conceito abstrato de representao chamado substantivo, alm disso
as classes apresentam caractersticas; atributos e mtodos so invocados para instanci
ar objetos dentro das classes, ou seja, objetos podem ser entendidos como instnci
as de uma classe, nesse caso, considerem-se os atributos como propriedades de um
objeto; j os mtodos so aes e procedimentos de interao e comunicao com outros objeto
r fim, os construtores so mtodos especiais chamados sempre pela palavra reservada
"new" na memria do sistema.
Aps essa breve demonstrao, adquirindo as primeiras noes de uma linguagem de programao
rientada a objetos, pode-se fazer uma modesta comparao entre Java e a linguagem C#
. Em termos gerais, so muito parecidas, mas o paradigma de Java mais ligado a obj
etos, enquanto a C# mais funcional, embora ambas estejam evoluindo em suas apare
ntes fraquezas; C# parece ser mais simples e concisa, enquanto Java complexa e p
rolixa; ambas tem amplas plataformas de aceitao, mas Java apresenta maiores possib
ilidades, alm de ter uma fatia muito maior do mercado e mais gente empenhada em d
esenvolvimento, ao ponto de no incio C# ter copiado muito da linguagem Java; amba
s tm boas IDEs, mas Java dispe de mais bibliotecas; o ambiente Java apresenta mais
avano, principalmente em relao ao coletor "JITter, mas o consuma de memoria da lin
guagem Java muito maior, enquanto C# apresenta muito mais metadados; reflexo e se
rializao so parecidas, mas muito diferente no modo de usar, e o ambiente de segurana
em C# parece ser mais completo; quanto tipagem, pode-se considerar que os tipos
primitivos no derivam de objetos em Java, que no aceita tipos annimos, em C#, sim;
o tipo decimal em Java ocupa mais memria, pois est na forma longa na biblioteca d
e Java; em relao orientao a objetos, Java optou por mtodos virtuais por "default", di
ficultando a performance e o encapsulamento, enquanto que C# no apresenta tais di
ficuldades; quanto ao mtodo, Java no apresenta mtodos condicionais, nem argumentos
opcionais/nomeados; sobre as excees, C# evita controle de fluxo normal, Java usa,
tornando-se mais lento; sobre a funcionalidade, Java no apresenta geradores (iter
adores) e inferncia de tipo; quanto aos mdulos, Java no tem como mudar o nome dos p
acotes importados; acerca dos operadores, pode-se considerar a ausncia do operado
r "nameof" em Java.
As informaes do pargrafo anterior foram reformuladas a partir dos conceitos do "sit
e StackExchange". Visivelmente, fica claro que houve uma tendncia do "site" em ap
ontar muito mais vantagens em C# do que em Java, entretanto, a tendncia "puxar a
sardinha para nosso lado". Como estou comeando agora, prefiro amadorecer no assun
to antes de pretender opinar sobre o que no domino. Existem outros inmeros tpicos n
o site, mas seria muito extenso tratar sobre todos aqui, deixando aos meus coleg
as os demais pontos para observao e dissertao neste frum.