Re: Linux e java
Gustavo,
Gustavo Noronha Silva wrote:
> [...]
É... essa é a mesma impressão que eu tenho, também... O gandhi
do quilombodigital é um ótimo programador de java e ele realmente
gosta da coisa. Mas ele me contou de umas libs java que só funcionavam
em Windows... acaba por aí a multiplataformicidade.
Os únicos casos em que vi isso foram apis que queriam fazer
coisas específicas de plataforma, no caso era uma api que
permitia fazer io com arquivos do Excel (não, não era parte da
solução, era parte da especificação do cliente :( ). No mais
nunca tive problema com relação a capacidade de rodar em
múltiplas plataformas. Já vi programas rodarem em Windows NT,
Windows 2000, Solaris, Slackware e Debian, sem nenhuma alteração.
Desenvolver em uma plataforma e fazer a publicação (deployment)
em outra é uma das coisas mais comuns no meu trabalho.
Algo que é muito comum acontecer em aplicações desktop
proprietárias, é o cara desenvolver em java e fazer o instalador
utilizando algum InstallShield da vida, ou tomar decisões de
projeto da aplicação assumindo que rodará no Windows.
A questão é que esse negócio do java é mais pra dizer que o
bytecode roda em qualquer máquina virtual, o que é verdade, mas
um código C bem escrito também pode compilar em diversas plataformas,
a única diferença é que você precisa de um binário pra cada uma.
Sim, neste aspecto você tem toda razão.
A vantagem de java em relação a C é o nível de abstração
proporcionado pelo fato de ser orientada a objeto e possuir
garbage collector.
C++ também é orientado a objeto, mas o nível de abstração é
baixo, você ainda é obrigado a gerenciar ponteiros, o que não é
nada abstrato. (Não estou dizendo que ponteiros são ruins, eles
tem o seu uso e fazem toda a diferença em certos contextos; mas
te levam a pensar em termos de posição de memória, o que não
ajuda muito quando se quer abstrair destas questões para poder
concentrar-se no problema a ser resolvido).
Você só esbarra, mesmo em C, em código mal escrito ou em libs
uniplataforma. Como exemplo, meu primeiro programa em C usando
Gtk eu compilei pra GNU/Linux e Windows, e funcionava bem...
É verdade, contra código mal escrito não há linguagem que se
salve. (Os compiladores podiam lançar algum warning mandando o
cara ir dormir).
Devo dizer que acho a GUI do java (swing né?) uma coisa linda,
extremamente coerente e etc.
E pesada, eu ousaria completar. Isto está melhor hoje por dois
motivos, as máquinas virtuais melhoraram e o as máquinas reais
também, nenhum dos dois é mérito desta api (é swing sim).
Acho que java deve ser uma ótima linguagem para fazer servlets,
mas parece deixar bastante a desejar, ainda, para aplicações
desktop comuns. Tem um maluco fazer um programa gráfico em java
pra acessar o Debian Bug Tracking System (procurem o arquivo da
debian-devel).... vamos torcer pra que ele nos prove o contrário.
Não só para fazer servlets, mas para fazer programas que rodem no
"servidor". O grande ponto fraco da plataforma java é justamente
a questão da quantidade de recursos computacionais exigidos para
ter um mínimo de usabilidade. No servidor a quantidade de
recursos computacionais é grande (ou pelo menos focada para
aquilo) e, depois de um certo ponto, ele otimiza absurdamente a
aplicação, quando, a grosso modo, um objeto começa a ser muito
utilizado, ele torna-se um gargalho para o sistema e é otimizado
(compilação dinâmica, mas também utiliza outras formas de
otimização). Chamo a atenção para o fato de não ser mérito da
linguagem java, mas da implementação.
Como já foi dito: o negócio é testar e tirar suas conclusões,
xml e java não vão salvar o mundo, mas têm sua utilidade.
Realmente a propaganda é exagerada.
Mas o foco da linguagem é programação comercial, um reino antes
(e ainda na verdade) era dominado por VB, que era mais utilizado
por uma questão de propaganda do que por mérito do produto.
A linguagem java realmente não é o melhor dos mundos, mas ao
aliar abstração (utilizando orientação a objeto) com márquinas
virtuais e apis muito bem implementadas ela se torna extremamente
poderosa para programação comercial.
[]'s Jonas
Reply to: