O que falta no java?

Olá

Eu continuo com a mesma opinião de 5 anos atrás: falta no Java suporte mínimo a acesso aos periféricos.

Como eu já disse antes: ao invés de gastar tempo e dinheiro com J2EE que tem poucas coisas que prestem, a Sun deveria ter resolvido os problemas que dificultam o uso de Java para aplicações triviais que imprimem uma notinha fiscal.

As melhores coisas do Java são servlets, JMS e JMX. O resto do J2EE é quase desnecessário e geralmente há outras alternativas ou soluções melhores. Se eu mandasse na Sun minhas fichas iriam todas no avanço do JMX e eu ainda colocava alguns engenheiros ajudando no Esper.

A idéia de suporte ao erlang na JVM é muito boa mas tenho dúvidas se rodando intermediado pela JVM o erlang conseguiria ser tão concorrente. Com a palavra o Mestre Louds.

[]s
Luca

Foi por isso que eu terminei o post com “vejo voces daqui uns 40 anos”. Sem rever um monte de conceitos fundamentais da JVM, nao da pra dar suporte a processos leves como se tem em Erlang - e o lance todo de pattern matching (que eu ainda nao entendo direito ate hoje) pode se tornar uma complicacao grande, tambem.

[quote=Luca]…
Como eu já disse antes: ao invés de gastar tempo e dinheiro com J2EE que tem poucas coisas que prestem, a Sun deveria ter resolvido os problemas que dificultam o uso de Java para aplicações triviais que imprimem uma notinha fiscal.
…[/quote]

E o que você acha que dá mais dinheiro para eles, vender suporte para J2EE ou arrumar problemas triviais para imprimir notinha fiscal? :slight_smile: Eu como empresa, gastaria meu tempo e dinheiro com o J2EE!

ASOBrasil

no ultimo ebisodio do javaposse eles comentaram as top 10 coisas ( mais um pouquinho ) de lixos que deveriam nao existir na jvm vale a pena dar uma olhada

http://javaposse.com/index.php?post_id=214073

Então vá programar em C#, que tem ponteiros de verdade (embora você tenha de usar uma palavra-chave “unsafe” para usá-los), e a palavra-chave “goto” funcionando direitinho. Cruz credo!

A propósito, normalmente em C#, quando você está querendo usar “unsafe” ou ponteiros há uma maneira mais simples, melhor e mais rápida para fazer a mesma coisa. Por exemplo, 85% dos casos em que se usa ponteiros em C++ é para passar um parâmetro por referência (em C++ você usaria & = referência e não * = ponteiro, mas por as pessoas não saberem usar &, usam * desnecessariamente. Nesses casos, em C# é para usar a palavra-chave ref.

using System;

class MyClass {
	public static void Main() {
		TestClass Obj = new TestClass();
		Obj.fun();
	}
}

class TestClass {
	public unsafe void fun() {
		int [] iArray = new int[10];

		// store value in array
		for (int iIndex = 0; iIndex < 10; iIndex++) {
			iArray[iIndex] = iIndex * iIndex;
		}

		// get value from array
		fixed(int* pInt = iArray)
		testFun(pInt);
	}

	public unsafe void testFun(int* p_pInt) {

		for (int iIndex = 0; iIndex < 10; iIndex++) {
			Console.WriteLine(*(p_pInt + iIndex) );
		}
	}
}

O que falta no java ?

Acho que mais pessoas do sexo feminino programando nessa linguagem :wink:

[]´s

Eu nem vou colocar o que acho que poderia ser mais consistente na API, porque a lista seria muito longa. Além do mais, tenho a séria impressão de que é praticamente impossível manter a consistência em uma API tão grande. Não tenho muita esperança de vê-la mais simples nos próximos releases, afinal de contas, a entropia tende a aumentar… :?

Dado o projeto em que estou trabalhando atualmente, acho que as três coisas que eu mais gostaria de ver na linguagem - aquelas que toda hora você pensa “hum, isso aqui seria beeem mais fácil se tivesse isto” - são:

:arrow: Traits;
:arrow: closures (e nem estou falando de full closures, algo como CICE já estaria de bom tamanho para mim;
:arrow: tuplas. Como eu sinto falta de tuplas.

Abraços,

Giuliano

Concordo com o Giuliano Mega no que diz respeito à consistência da API. É muito complicado manter um emaranhado tão grande de classes devidamente “normalizadas”. Talvez a solução fosse a Sun montar um projeto para revisar minuciosamente toda a API (aproveitando as prováveis novas features do Javadoc), de modo a modificar coisas já desnecessárias (como o caso do Vector/List citado por ViniGodoy), além de remover os métodos Deprecated (claro que versões compatíveis com a 1.1 têm de continuar a existir).

Uma pequena coisinha que eu acho que poderia ser implementada é um compensador de path (?!).

Acho meio “inflador” ter de especificar package’s absolutos em relação ao package atual. Exemplo:

package ext.domain.host.module.resources;

public class Res {}

____________________________________
package ext.domain.host.module;

import ext.domain.host.module.resources.Res;

public class Main {}

O que acho desnecessário é eu ter de especificar todo o pacote no import, seria mais prático algo do tipo: se estou no pacote pack.sec, para importar uma classe do pacote pack.sec.tec, então eu usaria algo do tipo:

import this.tec;

Onde o this seria substituído pelo meu pacote em tempo de compilação. Espero que alguém tenha me entendido oO.

Complementando,

Uma coisa que eu to loco pra ver no Java 7 eh a reitificacao de tipos genericos.
Atualmente, por motivos de compatibilidade com as versoes mais antigas que nao tinham suporte a Generics, a parametrizacao de objetos eh feita com erasure

Outro assunto que eu achei bem interessante sao as closures… mas esse assunto eu deixo nas maos do Neal Gafter (http://gafter.blogspot.com/).

Agora, soh nos resta acompanhar e aguardar…