* Java é uma grande criadora de empregos. Exige 20 programadores para desenvolver o que em outras linguagens bastaria 4.
arq = open('dados.txt', 'r')
for linha in arq.readlines():
print linha #essa linha é identada, mas no post não fica correto :(
arq.close()
FileReader reader = new FileReader(new File("dados.txt"));
BufferedReader leitor = new BufferedReader(reader);
String linha = null;
while((linha = leitor.readLine())) {
System.out.println(linha);
}
Será que se você conhecer as manhas da linguagem você não se torna produtivo?
Em Java você é obrigado a:
1 - Usar a "simples" API
2 - Declarar tudo
3 - Usar classes
public void printFileToConsole(String filename)throws IOException{
FileChannel fc = new RandomAccessFile(new File(filename), "r").getChannel();
MappedByteBuffer buffer = fc.map(FileChannel.MapMode.READ_ONLY, 0, (int)fc.size());
byte[] content = new byte[1024];
while(buffer.hasRemaining()){
buffer.get(content);
System.out.print(new String(content));
}
fc.close();
}
Thread.dump()
expresso na classe de teste resolve), além de exibir o valor das variáveis locais (as quais, em uma classe corretamente modularizada, têm a obrigação de serem bem poucas). Descobrir onde está um erro dessa forma leva menos de 15 minutos. Após consertar vc. testa de novo, percebe novos bugs possíveis, escreve mais testes e roda o teste de novo...
>>> a = "aaa"
>>> type(a)
type 'str'
>>> b = 1
>>> type(b)
type 'int'
>>> f = open("/tmp/bla.txt","w+")
>>> type(f)
type 'file'
public interface MinhaInterface{
public void meuMetodoGarantido();
}
class MeuCodigo{
public void meuMetodoReaproveitavel();
}
class MinhaSubclasse implements MinhaInterface{
private MeuCodigo codigo = new MeuCodigo();
public void meuMetodoGarantido(){
this.codigo.meuMetodoReaproveitavel();
}
}
class MeuCodigo{
public void meuMetodoReaproveitavel();
}
class MeuCodigo{
public void meuMetodoReaproveitavel(){
//Escreva aqui seu código
}
}
A JVM da Sun é um ponto de referência da comunidade. É importante que o desenvolvimento da VM, assim como das suas core-APIs, esteja sob o domínio do processo JCP.
O que eu considero válido é extender ao código da própria VM a licença de pesquisa (já disponível para as core-APIs), que permite ler o código e escrever o seu baseado no conhecimento adquirido.
Isso porque, por um lado, precisam existir implementações livres inteiramente independentes da original. Por outro, precisa existir uma implementação padrão, não-comercial disponível que seja mais conservadora.
A implementação de uma JVM livre já está em andamento com o projeto Apache Harmony (que usa e abusa da licença de pesquisa, para desenvolver as core-APIs).
Para agilizar o desenvolvimento das VM livres, a Sun poderia simplesmente doar o código existente hoje, para servir de ponto de partida. Mas esse é um processo caro, que envolve patentes "invisíveis" de muita gente que nunca se importou com seus direitos até hoje, mas que ao mero rumor de abertura vai levantar pra reclamar e vender seu código ou padrão a altos preços. A Sun terá que comprar, solicitar a doação ou substituir esses fragmentos (pra ter uma idéia, até a Kodak tem coisa no java).
Com uma equipe distribuída trabalhando direto no Apache Harmony (incluindo gente da própria Sun), duvido que eles venham a fazer isso.