Acredito que muitos já saibam que com o lançamento do JDK 8 a Oracle removeu o espaço de memória chamado de PermGem e substituiu por um novo conceito de gerenciamento chamado de Metaspace, que utiliza a memória nativa, parecido com o encontrados na Oracle JRockit e IBM JVM’s.
Com o Early Access do JDK 8 lançado recentemente, os desenvolvedores podem verificar essa modificação.
Pierre - Hugues Charbonneau fez um ótimo artigo explicando as mudanças.
No meu ver acho que a JVM poderia ser um pouco mais inteligente nesse gerenciamento de espaço, com o uso de alguns algoritmos.
A solução ideal (em ambientes de produção / missão crítica) poderia-se determinar um mínino + máximo como é feito hoje. Porém deveria haver uma porcentagem de acréscimo quando atingido o máximo. Atualmente quando se ultrapassa esse máximo, não só a aplicação sai do ar como em muitos casos é necessário reinicar todos os servidores sejam eles de aplicação JEE ou containers web.
[quote=Giulliano]No meu ver acho que a JVM poderia ser um pouco mais inteligente nesse gerenciamento de espaço, com o uso de alguns algoritmos.
A solução ideal (em ambientes de produção / missão crítica) poderia-se determinar um mínino + máximo como é feito hoje. Porém deveria haver uma porcentagem de acréscimo quando atingido o máximo. Atualmente quando se ultrapassa esse máximo, não só a aplicação sai do ar como em muitos casos é necessário reinicar todos os servidores sejam eles de aplicação JEE ou containers web.[/quote]Mas não vejo lógica em haver essa % máxima.
Se essa % máxima já está disponível, por que ñ utilizá-la?
[quote=Hebert Coelho][quote=Giulliano]No meu ver acho que a JVM poderia ser um pouco mais inteligente nesse gerenciamento de espaço, com o uso de alguns algoritmos.
A solução ideal (em ambientes de produção / missão crítica) poderia-se determinar um mínino + máximo como é feito hoje. Porém deveria haver uma porcentagem de acréscimo quando atingido o máximo. Atualmente quando se ultrapassa esse máximo, não só a aplicação sai do ar como em muitos casos é necessário reinicar todos os servidores sejam eles de aplicação JEE ou containers web.[/quote]Mas não vejo lógica em haver essa % máxima.
Se essa % máxima já está disponível, por que ñ utilizá-la?[/quote]
Na nova implementação vai ter isso (mais ou menos). O espaço será aumentado conforme necessário, mas o usuário pode esbelecer um limite. E sempre é bom estabelecer este limite. Não é inteligente simplesmente explodir com a memoria da máquina.
Acredito que muitos já saibam que com o lançamento do JDK 8 a Oracle removeu o espaço de memória chamado de PermGem e substituiu por um novo conceito de gerenciamento chamado de Metaspace, que utiliza a memória nativa, parecido com o encontrados na Oracle JRockit e IBM JVM’s.
[/quote]
Eu já sabia desta noticia, mas agra lendo melhor os detalhes dicou claro que é tudo a mesma coisa. Na realidade é pior. Agora uma aplicação java pode consumir a máquina inteira sem nunca ninguem saber. A modificação foi apenas para poder fundir o hotspot com o JRokit e não para facilitar a nossa vida.É a Oracle fazendo 'arte"… no mau sentido. Vamos ver no que isso no mundo real. Logo para começar vai dar dor de cabeça para quem nunca usou outra jvm senão o hotspot e estava habituado ao OutOMemoryError
…the Metaspace will dynamically re-size depending of the application demand at runtime. Essa alteração será uma gerenciamento inteligente (por isso fiz meu primeiro comentário). Lógico que ele não pode acabar com a memória do meu servidor…mas se tem memória livre e minha aplicação precisa de memória…pq não usá-la em runtime…
[quote=paulo_1981]O que não dá pra entender é quando vem alguém nos fóruns e postam fim do java, o java não evolui.
O Java está evoluindo e surpreendendo cada vez mais.
Cheguei a conclusão que Java é uma linguagem para programadores sérios. [/quote] Mas a alteração é JDK, ou seja, na plataforma.
A linguagem não sei como anda, mas que demorava pra evoluir demorava, vamos ver como a Oracle vai gerir daqui pra frente, pois essa primeira feature valendo que a Oracle pegou não conta, pois o pepino era realmente grande… O tempo e a relevância do Java 8 para o 9, nos ajudará a medir o qaunto a linguagem estará evoluindo com a Oracle.
Quanto à sua última afirmação, Java sempre foi e nunca deixará de ser uma linguagem para programadores sérios, só que está atrasada alguns anos em relação às outras como linguagem, já como plataforma, está uns bons anos na frente de todas, talvez só não de .NET.
Enfim, eu estou confiante em relação aos próximos passos da plataforma e da linguagem.
[quote=adriano_si] Mas a alteração é JDK, ou seja, na plataforma.
A linguagem não sei como anda, mas que demorava pra evoluir demorava, vamos ver como a Oracle vai gerir daqui pra frente, pois essa primeira feature valendo que a Oracle pegou não conta, pois o pepino era realmente grande… O tempo e a relevância do Java 8 para o 9, nos ajudará a medir o qaunto a linguagem estará evoluindo com a Oracle.
Enfim, eu estou confiante em relação aos próximos passos da plataforma e da linguagem.[/quote]
Por que só com o Java 9? A Oracle já lançou atualização da linguagem com o Java 7, que estava com o cronograma atrasado mais de 2 anos. E o Java 8 também está vindo com evolução na linguagem, inclusive muitas solicitadas há anos. Não precisa esperar pra ver que o Java acelerou, bastava ter acompanhado os builds de quando a Sun administrava o Java e de agora, é nítida a melhora. O problema é que o Java ficou tempo demais parado, então tem muita coisa pra evoluir ainda.
bom??? booomm?? como assim, bom?
isso não pode ser bom! isso pode muito bem ser olhado com incertezas!
quem garante que esse tipo de substituição não irá afetar a homogeneidade com versões anteriores!!! quer dizer que o que for feito em java 7 pode não rodar em java 8 ? vai ser compatível?
[quote=Victor Neves]bom??? booomm?? como assim, bom?
isso não pode ser bom! isso pode muito bem ser olhado com incertezas!
quem garante que esse tipo de substituição não irá afetar a homogeneidade com versões anteriores!!! quer dizer que o que for feito em java 7 pode não rodar em java 8 ? vai ser compatível?
[/quote]
Putz sorry mas o java não M$ pelo menos neste critério … basta pegar a evolução da plataforma e ou jvm … disso acredito que estamos livres, uma vez que qualquer alteração da linguagem em si passe pelo JCP …ai vão dizer aqui : - Ahhh mais a oracle que manda lá e tal … o core da oracle não é o java , mas muitos sistemas e ou softwares da oracle hoje em dia tem cada vez mais java , ou seja, não é o core mas é interesse dela manter a linguagem atual e difundida cada vez mais …
Também programo um pouco em .NET (C#) e digo: quando há uma versão nova do framework, é um verdadeiro caos mudar de versão. Eu mesmo tenho várias versões do Visual Studio aqui na minha máquina, uma para cada versão do framework, porque código perfeitamente bom que rodava em uma versão precisa de várias alterações para rodar na versão seguinte.
E em C++ o problema é um pouco minorado porque tentamos usar bibliotecas que nos blindam desses problemas de versões incompatíveis de bibliotecas do sistema operacional ou do compilador, mas mesmo assim temos um sistema grande aqui que foi desenvolvido com o VS 2005 e não será atualizado para o 2010 ou 2012 a menos que arranjemos orçamento para fazer o reteste completo, além de várias adaptações nos programas.
Entretanto, os programas em Java têm pouquíssimos problemas quando passamos de uma versão para outra do Java. Basta não usar classes do tipo “com.sun” ou outras classes não-documentadas ou que estão explicitamente marcadas para não serem usadas (por exemplo, muitas classes com.sun.misc estão documentadas mas na sua documentação indica-se que não devem ser usadas por programas de usuários.)
[quote=marcosalex][quote=adriano_si] Mas a alteração é JDK, ou seja, na plataforma.
A linguagem não sei como anda, mas que demorava pra evoluir demorava, vamos ver como a Oracle vai gerir daqui pra frente, pois essa primeira feature valendo que a Oracle pegou não conta, pois o pepino era realmente grande… O tempo e a relevância do Java 8 para o 9, nos ajudará a medir o qaunto a linguagem estará evoluindo com a Oracle.
Enfim, eu estou confiante em relação aos próximos passos da plataforma e da linguagem.[/quote]
Por que só com o Java 9? A Oracle já lançou atualização da linguagem com o Java 7, que estava com o cronograma atrasado mais de 2 anos. E o Java 8 também está vindo com evolução na linguagem, inclusive muitas solicitadas há anos. Não precisa esperar pra ver que o Java acelerou, bastava ter acompanhado os builds de quando a Sun administrava o Java e de agora, é nítida a melhora. O problema é que o Java ficou tempo demais parado, então tem muita coisa pra evoluir ainda.[/quote]Também penso assim. [=
Acho que só do Java 7 já ter saído já foi um senhor avanço e o 8 já estar a mostra? Realmente parece que o Java está sendo “acelerado”.
[quote=Victor Neves]bom??? booomm?? como assim, bom?
isso não pode ser bom! isso pode muito bem ser olhado com incertezas!
quem garante que esse tipo de substituição não irá afetar a homogeneidade com versões anteriores!!! quer dizer que o que for feito em java 7 pode não rodar em java 8 ? vai ser compatível?
[/quote]Nunca vi problema de incompatibilidade do Java. Já vi de frameworks que ao mudar a versão da JDK o framework arriou. Tirando isso de lado, nunca vi problema mesmo. [=
[quote=marcosalex][quote=adriano_si] Mas a alteração é JDK, ou seja, na plataforma.
A linguagem não sei como anda, mas que demorava pra evoluir demorava, vamos ver como a Oracle vai gerir daqui pra frente, pois essa primeira feature valendo que a Oracle pegou não conta, pois o pepino era realmente grande… O tempo e a relevância do Java 8 para o 9, nos ajudará a medir o qaunto a linguagem estará evoluindo com a Oracle.
Enfim, eu estou confiante em relação aos próximos passos da plataforma e da linguagem.[/quote]
Por que só com o Java 9? A Oracle já lançou atualização da linguagem com o Java 7, que estava com o cronograma atrasado mais de 2 anos. E o Java 8 também está vindo com evolução na linguagem, inclusive muitas solicitadas há anos. Não precisa esperar pra ver que o Java acelerou, bastava ter acompanhado os builds de quando a Sun administrava o Java e de agora, é nítida a melhora. O problema é que o Java ficou tempo demais parado, então tem muita coisa pra evoluir ainda.[/quote]
O Java 7 e o 8 são na realidade o mesmo. Deveria ser 7.1 e 7.2. E isso sim mostra o atraso.
O Java 7 ainda foi iniciado quando era a Sun. O processo de compra e o desnorteamento da Oracle que não sabia o que estava comprando ( eles ahavam que tavam comprando o javaCard, mas na realidade estavam comprando o gerenciamento de uma comunidade ativa de milhões de pessoas) atrazou o processo. O JavaFX tb roubou recursos do java SE com a grande asneira que foi o java FX 1, o 2 promete arrazar a concorrencia ( o silverlight e o flash, … ops! perai, o HTML 5 tornou tudo isso obsoleto… )
Ou seja, as apostas erradas nos momentos errados. E é por isso que o java 9 irá medir o quanto realmente a Oracle sabe trabalhar com o java. Mas os sinais são claros desde já.
O Hotspot é a VM mais avançado do mundo , mesmo comparada com outras VM java e mesmo comparada com vm de outras linguagens. Logo, nem o JRokit ganha essa. Mas O JRockit é mais rápido em alguma coisas e é um produto comercial. A fusão dos dois é o seguinte : a comunidade fica com a mesma coisa , e tem que se adquar a alguns “quirks” do jrokit, a oracle unifica as duas máquinas, um só produto, duas licenças e pode continuar ganhando dinheiro como antes. Isto foi uma coisa que Sun não fazia. A sun só ganahava dinheiro com o javacard. o hotspot nunca foi “comercial”. Mas o bom é que a comunidade deve ganhar uma vm ligeiramente mais rápida. sobretudo em modo Servidor, que é onde interessa. Mas a Oracle continuou a tradição da Sun e apostou forte no desktop. O recente bug mostra que eles estão mudando o lado cliente tb e querem fazer ainda mais. Com as noticias do Java 8 já rodar no Raspberry Pi e demos o java rodando em ipad e android é uma questão de tempo que o java retome a promessa “write once, run anyhere” ,o java 9 vai realmente ser a prova dos 9.