Então Java nao é recomendado qndo a performance é um ponto “meio q” critico?
Obrigado.
Então Java nao é recomendado qndo a performance é um ponto “meio q” critico?
Obrigado.
Olá
Java pode ser excente quanto à performance. O melhor servidor http que tenho notícia é todo em Java e é muito mais rápido que o Apache que já é bem maduro com seus 10 anos que é feito em C.
O problema está na escolha dos algoritmos e no cuidadoso profile que precisa ser feito nas aplicações Java quando o objetivo prioritário é performance.
O C/C++ por ser compilado naturalmente pode ter boa performance. E justamente pela fraqueza do C/C++ de não ter garbage collector automatico com C/C++ se pode controlar exatamente o momento de iniciar em background um processo de limpeza da memória. Por exemplo: um programador de uma aplicação em C para monitorar uma cirurgia cardíaca jamais teria coragem de iniciar GC em background enquanto controla o coração do paciente.
O Java quando usado corretamente sem carregar muitas classes a toa, sem instanciar objetos desnecessariamente, usando transient em objetos serializaveis para não levar recursivamente para o disco zilhões de classes, sem criar um monte de threads cada uma com sua stack, em suma, programando direito, sua performance é excelente. E com Java você pode fazer coisas que com C/C++ nem em sonho.
[]s
Luca
Eu acho que seria mais o caso de dizer “só em pesadelos”, é possivel implementar em C++ muitos dos recursos dinâmicos do Java, mas seria um inferno tão grande fazer que daria pesadelo no mais insano dos desenvolvedores.
Uma prova disso é o AspectC++, suporta AOP no estilo do AspectJ (source transformation), meu amigo encontrou algumas dúzias de erros nele quando estava usando no seu trabalho de graduação, arrumaram a maioria, mas tem alguns que ainda impossibilita ela de usar em outro projeto dele (www.wpdev.org) simplesmente porque o parser do AspectC++ não aguenta o tranco de entender C++.
Agora quantos aqui no forum que conhecem C/C++ e AOP em java sabiam que existe software de AOP para C e C++ (AspectC e AspectC++)?
raises hand
Acho que a questão nem é quantos saberiam fazer AOP em C/C++, pois uma vez que você sabe os conceitos certinho, a linguagem é o de menos. A questão é saber quem estaria de fato disposto a isso, sabendo que a implementação de recursos dinâmicos em C, como você disse, são monstruosos (Ok, Carlos, pode abaixar a mão!).
Olá
Só queria lembrar aos preclaros colegas que a questão inicial era performance. Que me lembre agora, a única ajuda de AOP na melhoria de performance é colocar marcos que facilitem o profile.
Sobre a questão de fazer coisas com Java que em C/C++ nem em sonho um dos desafios interessantes para os caras feras em C é escrever algo semelhante à classe java.util.WeakHashMap.
[]s
Luca
Não gostaria de mudar de assunto, mas:
-Com AOP voce pode criar aspectos de caching ou criação de um execution plan melhor.
-Para implementar um java.util.WeakHashMap é um pouco de hacking no Boehm-Demers-Weiser GC.
Java funciona sim para grandes deployments, veja o caso da ebay, 1 bilhão de transações por dia, usando 100% java (tirando o RDBMS).
Olá
-Para implementar um java.util.WeakHashMap é um pouco de hacking no Boehm-Demers-Weiser GC.
Bota hacking nisto! Fazer GC que funcione direito é uma tarefa que a Sun levou alguns anos.
Sobre o uso do AOP para melhorar a performance confesso que pisei na bola, principalmente porque esqueci de um livro que li no ano passado que tem um capítulo inteiro sobre isto. É o capítulo 7 do livro AspectJ in Action (Optimization: pooling and caching).
[]s
Luca
Olá
Bota hacking nisto! Fazer GC que funcione direito é uma tarefa que a Sun levou alguns anos.
Não precisa fazer, já existe! Seria apenas implementar weak references…