Executando verificação de segurança...
14

Java: Uma relação de amor e ódio - Por que a linguagem divide opiniões?

Esse é meu primeiro artigo na plataforma, então tentei construir algo que tivesse algum valor para a comunidade. Então, sem mais delongas, vamos começar.

Java, uma das linguagens de programação mais populares e utilizadas no mundo, desperta paixões e aversões entre desenvolvedores. Sua longa história, vasta comunidade e presença em grandes empresas contrastam com críticas sobre sua verbosidade, complexidade e desempenho. Neste artigo, vamos discutir um pouco sobre os motivos por trás dessa dualidade, analisando os pontos que geram tanto amor quanto ódio em relação à linguagem.

Vamos começar abordando um pouco sobre quais são alguns dos pilares dessa popularidade.

Ubiquidade: Java está presente em diversos sistemas, desde aplicativos Android até sistemas bancários e servidores web. Essa onipresença garante uma vasta oferta de oportunidades de trabalho para desenvolvedores Java.

Comunidade e ecossistema: A comunidade Java é enorme e ativa, oferecendo suporte, bibliotecas e frameworks para praticamente qualquer necessidade. Essa riqueza de recursos facilita o desenvolvimento e a resolução de problemas.

Portabilidade: O princípio “Escreva uma vez, execute em qualquer lugar.” (WORA - Write once, run anywhere) permite que aplicativos Java rodem em diferentes sistemas operacionais sem modificações, graças à Máquina Virtual Java (JVM).

Estabilidade e maturidade: Java é uma linguagem madura e estável, com um histórico comprovado de confiabilidade em sistemas críticos.
As Razões da Aversão:

Verbosidade: Java exige mais código para realizar tarefas simples em comparação com linguagens mais modernas, o que pode tornar o desenvolvimento mais lento e o código mais difícil de ler.

Complexidade: A curva de aprendizado de Java pode ser íngreme para iniciantes, devido à quantidade de conceitos e bibliotecas a serem dominados.

Desempenho: Embora o desempenho do Java tenha melhorado significativamente, ainda pode ser inferior ao de linguagens como C++ ou Rust em cenários de alto desempenho. A JVM, embora essencial para a portabilidade, adiciona uma camada de abstração que pode impactar o desempenho.

Sintaxe: Alguns desenvolvedores consideram a sintaxe de Java antiquada e menos elegante do que a de linguagens mais recentes.

Sistemas legados: Por ser uma linguagem muito utilizada no passado, muitos programadores acabam trabalhando com sistemas antigos, e realizar manutenção nesses sistemas pode ser entediante.

É importante ressaltar que a percepção sobre Java é subjetiva e depende do contexto. Para grandes empresas e sistemas críticos, a estabilidade e a maturidade de Java são vantagens inestimáveis. Para desenvolvedores que buscam agilidade e concisão, linguagens mais modernas podem ser mais atraentes.

Agora falando um pouco de futuro, apesar das críticas, Java continua evoluindo e se adaptando às novas demandas do mercado. A linguagem tem recebido atualizações constantes, com melhorias de desempenho, novas funcionalidades e otimizações para desenvolvimento em nuvem.

Java é uma linguagem poderosa e versátil, com uma história rica e um futuro promissor. Sua popularidade e uso generalizado garantem sua relevância no mundo da programação, mesmo que continue a dividir opiniões. A escolha de usar Java ou outra linguagem depende das necessidades e preferências de cada desenvolvedor e do contexto do projeto.

E você, tem algo a acrescentar? Concorda ou discorda de algo? Por favor, deixa aqui nos comentários para que eu possa aprender um pouco mais com você!

Obrigado pela leitura, e tamo junto!!

Carregando publicação patrocinada...
7

Eu escrevi um pouco sobre isso em https://www.tabnews.com.br/maniero/286e5a2e-8144-46a7-bed3-8390f185e6a1.

Tecnologia que a pessoa se apaixona tem algo errado, ela pode ter uma preferência, mas a paixão é um sinal muito errado. Aversão nem tanto, mas depende do nível, porque tem tecnologias ruins e que causam dificuldades reais para as pessoas, em alguns casos até porque não encaixa com a personalidade da pessoa, dá para discutir que isso diminui um pouco o profissionalismo da pessoa, mas é um fato que você trabalhar com algo que você não gosta traz resultados piores. Sorte de quem é frio ao extremo e "gosta" de tudo.

Ubiquidade tem linguagens até mais bem posicionadas, não sei hoje, mas até C# em dado momento estava em plataformas importantes que Java não estava. Não dá para vender algo como diferencial positivo quando não é exclusivo dela e até nem é tão verdade quanto alguns acreditam. Tem a ver com o WORA também que já falei no link acima, é um marketing padrão que não traz valor real que outras não trazem. Quase sempre o WOCA é melhor por isso até o Java aderiu.

Comunidade e ecossistemas muitas linguagens têm forte e até mais que Java.

A esmagadora maiorias das linguagens são maduras e estáveis e histórico em alguns casos comprovados de confiabilidade e segurança.

A verbosidade é um fator, mas ele não é tão grande assim, sintaxe importa, é um motivo de alguns não gostarem, faz algum sentido, mas não é o fim do mundo. O mesmo vale pra ser antiquada, que no fundo é a mesma coisa. Java tem um problema de concisão, melhorou, mas isso importa pouco.

De fato ela não é tão fácil de aprender, e não a recomento para iniciantes, e achei um absurdo quando faculdades começaram adotá-la. Ou vai de C para formar profissionais de primeira linha, ou vai de JS pra entregar alguém rápido no mercado, mesmo que a carreira dessa pessoa fica limitada. Tanto C, quanto JS, a primeira mais ainda, tem bem menos conceitos para aprender e pode começar de forma mais confortável. Mas isso eu explico melhor em outros textos.

A questão do desempenho não gera aversão a não ser em idiotas. Ou a pessoa é completamente desinformada ou ela sabe muito bem o que precisa, e precisa de controle absoluto da memória, mais que o processamento, mas este também, e eventualmente acesso mais direto ao hardware. Não dá nem para comparar isso, é como a pessoa ter aversão ao fusca porque ele precisa transportar 20 toneladas de milho.

Não se pode culpar o fato de mexer com legado ao problema da linguagem. A maioria tem muito legado. As que tem menos se provam pouco interessantes para a maioria dos projetos, ou porque falta maturidade ou porque os projetos não duram.

Java tem agilidade no longo prazo comparando com linguagens de script, se os programadores souberem o que estão fazendo. Ela tem mais agilidade em quase tudo quando se compara com linguagens de sistemas que exigem você controlar mais a execução.

Java tem evoluindo bem nos últimos anos, e só não melhora mais porque poderia quebrar a compatibilidade ou é muito difícil encaixar com os erros cometidos no passado. Por exemplo estão prometendo struct há mais de 10 versões e nada, nem sei se ainda vai rolar, e isso seria muito importante para ela servir a mais cenários. Isso é só um exemplo dos erros da linguagem no passado e que muitos amantes da linguagem falavam como se fosse algo positivo.

Java não é derivada de C, basicamente em nada, só um ou outro detalhe de sintaxe, mas a maioria não, em semântica praticamente zero, em filosofia completamente zero. Ela nem mesmo é uma "evolução do C++" ou o "C++ seguro" como a Sun fazia de marketing no começo, o que era absolutamente risível e só trouxa completamente sem noção acreditava nisso. C# é muito mais próxima de C++ e ainda assim está bem longe.

Como eu sempre falo a internet está cheia de informação total ou parcialmente errada e da mesma forma que as pessoas têm político de estimação, elas têm tecnologias de estimação.

O concorrente mais direto é obviamente C#. Eu sei que Jon Skeet que é uma lenda e usa as duas, prefere C#. Eu sei que os melhores desenvolvedores da linguagem e as cabeças mais privilegiadas entre usuários então em C#. Eu já vi debate de um dos maiores especialistas de Java, desses que estão na linha de frente mesmo, que participa em um nível quase de funcionário da Oracle, se hoje não for, contra um grande especialista de C#, mas não alguém tão no topo assim, o primeiro tomou um couro inacreditável. Em todas as comunidades tem gente muito boa e gente muito ruim, além das medíocres que costuma ser a maioria obviamente, mas a minha percepção que há mais gente preparada de forma completa em C# do que Java, parece que muitas vezes a escolha por Java é acaso ou porque a pessoa não sabia fazer uma boa escolha, e o acaso pode ser porque estava mais fácil conseguir emprego, que é um ótimo motivo pessoal, mas não tão bom tecnicamente falando.

Usando método científico, Java é uma linguagem muito boa e pode ser a melhor escolha em alguns cenários. Em outros casos tem melhores. Mas não costuma acontecer assim.

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).

1

Eu não só agradeço pela excelente explicação, como vou acompanhar tuas publicações. E já deixei meu follow no repositório do link, vai me servir muito.

Muito obrigado!

2

Trabalhei muito com Java, e ganhei muita grana com horas extras. Não posso falar mal, pois seria cuspir no prato que comi. Mas a linguagem tem alguns incômodos, poderia ter sido melhor especificada. Acho que na época não tinham muita referência.

Os tempos mudaram, hoje em dia o foco é rapid-development pela pressão do time-to-market. Há linguagens que são bem mais produtivas no desenvolvimento web, como Python, PHP e Ruby, e outras linguagens com melhor performance para cloud, como Go. Acho que Go irá morder uma fatia de mercado do Java considerável nos próximos anos. Mas Java é o novo Cobol, ainda vai existir por décadas.

2

Faz muito sentido, também acredito que Go vai tomar uma boa proporção no mercado.

Muito obrigado por compartilhar essa experiência, é motivador para pessoas que estão em início de carreira, assim como eu!!

1

Estou estudando Java atualmente e pretendo trabalhar com essa linguagem para sempre, porém no início é normal enfrentar muitos problemas, ainda mais eu que começei com Python na faculdade e estava achando que programação era só um print('Olá mundo!').

0
-3

Um aspecto importante é que java é derivada da linguagem C. A sintaxe é a mesma e a diferença é basicamente na lista de 'palavras reservadas' que é maior na linguagem java. O mesmo é válido para php e javascript.

1