Falhas de Design e Evolução

Ladies and gentlemen,

Peço que leiam este pequeno artigo escrito pelo saudoso Paulo Torrens.

Me digam, o que acham disso tudo? O que foi dito no artigo confere com a opinião de vocês?

Expos bem alguns pontos, apenas sobre as exceções que não concordo, afinal os fatos que ele apresentou sobre a má utilização delas são erros de desenvolvimento feito por desenvolvedores.

O uso de exceções tem um critério que deve ser observador, as exceções verificadas permitem (ou seria, obriga) o programador a realizar o tratamento e desvio de fluxo, pois elas podem estar intimamente relacionada ao negócio, como por exemplo não encontrar um arquivo em um diretório, se este arquivo for essencial, o programa deve cair (Unchecked Exception), caso não, o programa deve desviar seu fluxo e lidar com isso (Checked Exception). Todos poderíamos utilizar a RuntimeException, mas a linguagem Java foi criada com um intuito de permitir o programador que cria bibliotecas obrigar os seus utilizadores a realizar certos tratamentos e controles.

Sobre a evolução da linguagem Java, ela realmente é lenta (com exceção dos ocorridos entre a versão 7 e 8, onde houve grandes mudanças) mas isso é por um motivo também apresentado no próprio texto, a retrocompatibilidade. Alguns afirmam que deveríamos queimar nossos programas antigos no fogo do inferno e deixar a linguagem evoluir mais rápido, mas sabemos que no mundo real e, principalmente, real e corporativo isso é impossível. Empresas gastam milhões em licenças de programas, ambientes e máquinas e querem fazer isso render ao máximo, afinal não existe justificativa um empresa investir mais na sua arquitetura de TI no que no seu próprio setor (a não ser que o setor seja TI).

Todos os passos em Java são dados com muito cuidado, mas hoje, como foi dito no artigo, temos outras linguagens rodando dentro da própria JVM e meios de realizar integrações de forma simples com outras linguagens e plataformas (webservices, filas e etc), então a principal questão a ser levantada é se a linguagem é a melhor opção do projeto e permite a evolução tranquila do sistema. Java não se enquadra em todas as situações, mas pode ser muito bom em algumas, da mesma forma que C#, C++, Python, Ruby e por ai segue. O programador deve saber do que a linguagem é capaz e incapaz de fazer e ter discernimento na hora de definir a arquitetura e design de sua aplicação.

Iiiii, ele voltou, fujam para as montanhas.