Vale a pena estudar Java?

48 respostas
U

Oi, gostaria de saber se vale a pena estudar Java, principalmente na área de I.A, nos dias atuais.
OBS: Gostaria de saber as fontes das opiniões

48 Respostas

javaflex

Não. Python e R são mais produtivos.

fventurajr

Espero que sim porque entrei em um curso de 6 meses de Java. :joy:

…mas para IA é melhor partir para Python, Lisp, Prolog.

PS: Por que não usar Java + linguagem de IA?

PedreiroDeSoftware

É mais trabalhoso, não compensa.
Imagine milhares de pessoas desenvolvendo bibliotecas de IA para R ou Python.

Além disso tem a sintaxe reduzida.
Com poucas linhas de código vc faz muita coisa.

É mais simples, só isso.
Menos trabalhoso.

U

Obrigado pelas repostas. Mas agora como faço para aprender python?

PedreiroDeSoftware

Udemy
YouTube
Google

fventurajr

Não entendi. R e Python já não são linguagens com vastas bibliotecas direcionada para IA, Machine Learning e Business Inteligence?

O que estou falando é de a camada de apresentação e de negócios ser em Java e a de serviços nessas linguagens.

andrebmarinho

Primeiro: entenda que linguagem de programação não é religião ou time de futebol, é apenas uma ferramenta, como um espécie de martelo ou alicate, ou seja a depender do que você vá fazer um momento você pega o que for mais conveniente.

Pra I.A realmente o java não é a ferramenta mais indicada.

javaflex

Querer usar Java a todo custo soa como religião mesmo.

Java para front-end também é fora de cogitação hoje.

PedreiroDeSoftware

Sim, mas há pessoas desenvolvendo e disponibilizando estas soluções.

Vc está correto, mas minha resposta foi direcionada para IA e não para o servidor.

Veja, nos seus termos, java funciona como um atravessador e não como um produtor.

Assim, como ele não vai utilizar java para fazer análises, não compensa estudar java para fins de IA conforme proposta apresentada pelo autor do tópico.

Em R vc faz muito com pouco esforço, não tem nem como comparar.

Isso lembra justamente a discussão sobre linguagens para apropriadas para finalidades distintas.

Por analogia, seria como se eu tivesse que escolher entre Java e um SGBD para fins de persistência, ou seja, embora eu possa serializar, salvar e recuperar objetos utilizando apenas java, o indicado é usar um SGBD pra isso.

Eu considero REST full como o mais apropriado para aplicações, seja web, seja desktop, seja mobile.
Isso descarta qualquer coisa que não seja html, CSS e JS na camada view em aplicações web, mas isso não impede a existência de endpoints personalizados para enviar as páginas.

Só tenho contra o REST a burocracia como na imagem a seguir de um curso de SpringBoot:

Como contornei a burocracia:

Sei só o básico de SpringBoot, pois comecei a estudar semana passada, só gastei tempo mesmo com as configurações.

j-menezes

Sim Vale.
Java é completo.
Segurança, grande numero de bibliotecas, portabilidade,ótimo para dar manutenção e criação de apis, frameworks, bibliotecas e tem a maturidade.

andrebmarinho
j-menezes

Acho interessante a sintaxe do Python, mas Java realmente está em praticamente tudo e continua forte. Foram e são muitas melhorias na linguagem, em bibliotecas e a modularização a muito tão esperada, ainda mantem a Segurança que falta em muitas outras tecnologias, não basta apenas ser multi plataforma gerando nativos é necessário ter Segurança e nisso o Java dá uma aula. Dizer que gostamos do Java não necessariamente anula os pontos legais e interessantes de outras tantas tecnologias. Penso que no fundo tem o seu espaço para ambas, mas já ví um teste entre IA no Prolog e em Java a implementação do mesmo algoritimo e Java deixou Prolog comendo poeira, interessante isso né !.

j-menezes

Weka tambem está interessante
https://iaexpert.com.br/index.php/2016/09/01/java-weka-na-pratica/

j-menezes

Veja o cenário hoje em dia.
Você tem uma demanda para desenvolver para desktop, mobile, servidor e micro dispositivos.

Tirando Java e C/C++ quantas linguagens você irá precisar dominar para desenvolver e dar manutenção ?

O Legal é que Java é mais elegante que C/C++, mais seguro e quando precisa de C/C++ o tem como um forte aliado.

Agora tem projeto que em C/C++ fica melhor e isso o programador com certeza saberá.

Então olha que coisa, digamos que você desenvolva em Python ou R ou Prolog, Lisp e outras tantas e agora tem um projeto que precisa embarcar num micro controlador por exemplo e você não quer e não pode usar Rede, tem que ser local, 1… , você terá problemas e quando achar se achar a solução nessas tecnologias talvez tenha que pagar um caminhão de dinheiro.

U

Muito obrigado pelas ótimas repostas. Eu entendo que linguagens de programação são ferramentas e devemos procurar as melhores para a situação, mas gostaria de saber qual é a melhor para investir atualmente python ou java ? Sou mais adaptado ao java, mas encontro a maioria dos códigos em python.

andrebmarinho

O legal é ter opções na nossa caixa de ferramentas. Usar conforme o cenário e não ser radical.

andrebmarinho

Olhe pra o seu cenário, você aprendendo uma linguagem, qual você encontra empresas próximo a você que podem lhe contratar?

j-menezes

Não adianta simplesmente achar que você deve pensar com a cabeça dos outros, isso não existe, o que pode ser bom pra mim talvez nem tanto pra você e vice versa.
Se for o caso aprenda ambas e tire suas proprias conclusões.

Talvez em determinados projetos prefira uma ao invés da outra.

j-menezes

Tambem tem muito analista de sistemas de empresas por ai ou mesmo gerente de projeto que diz em qual tecnologia prefere, que não entende nada de programação, e acha que entende porque fez uma telinha com um pouco mais ou menos de linhas de codigos e já acha que tal linguagem seja melhor ou pior.
Quem entende é a gente que programa diariamente e sabe das dificuldades e dos pontos fortes e fracos das ferramentas e linguagens que usamos.

JavaFX tá excelente para Desktop, mobile e raspberry ( risos )

U

Ok. Vou estudar Java e Python. Gostei bastante das dicas e reflexões desde tópico. Muito obrigado pessoal me ajudaram demais.

darlan_machado

Vamos começar pelo princípio: não existe bala de prata.
Para cada necessidade, existe uma solução mais adequada. Afinal, nem todo problema é prego e nem toda solução é martelo, não é verdade?
Obviamente que, desde que alguém teve a ideia de colocar javascript no backend, a coisa meio que degringolou, mas…

Java é bom para certas coisas, assim como C#, PHP ou mesmo C. Lógico que estas certas coisas podem ser as mesmas coisas e podem ser coisas distintas e únicas.

Para IA, efetivamente, é muito mais fácil usar linguagens como python. Para web, depende da razão pela qual o projeto será criado. E-commerce pode ser em php ou asp ou node + angular ou vue. Corporativo, pode ser asp ou java. E assim por diante.

Agora, uma dica: estude uma linguagem por vez. É mais fácil entender conceitos e assimilar a sintaxe.

j-menezes

Mais facil não significa ideal nem melhor. Longe disso.
Mas Weka em Java tá bem facil viu !!!
É que criou uma modinha aqui, nesse forum.
Quase tudo que aparece por regra é melhor que Java.
Aqui é quase que proibido falar bem de Java.

darlan_machado

Concordo totalmente. Na verdade, a modinha nem é daqui do fórum, é num nível muito maior.
O “mais fácil”, nesse caso, é que há muito mais material associando uma coisa à outra. Assim como é muito mais comum encontrar materiais de estudo para kotlin voltado para desenvolvimento mobile (vide udemy), embora kotlin tenha um espectro muito mais amplo que apenas o mobile.

j-menezes

Tem uma quantidade enorme de material do Java sdk da google por ai, é só procura.

T

Sempre vale a pena estudar para aprender algo novo.
Existe este, bem interessante, e outros projetos feito com Java e Prolog.


Cada projeto tem as suas peculiaridades de linguagem que melhor se adapta para a solução, porém, dominar completamente uma única linguagem requer dedicação pois são muitos javadoc’s e referências para assimilar. Dedique-se a uma linguagem por vez como disse o @darlan_machado.

javaflex

É jovem, escolhe uma por vez conforme sua necessidade prioritária.

rodriguesabner

O legal do Kotlin é que ele está bastante semelhante ao Swift, surgiu um trampo pra eu fazer no iOS aqui e optei em usar o Swift. É bem semelhante, bem legal mesmo.

Falando ainda sobre o Java, eu fiz um App de um programa desktop que a empresa tem (pra portaria, feito em Java), consegui implementar o Firebase tanto no Desktop quanto no Mobile (ate notificação push eu consegui enviar via Desktop), em 3 dias de desenvolvimento já consegui fazer muita coisa aproveitando códigos, o legal do Java é isso.

Acredito que se o programador souber se virar bem na linguagem, pode solucionar muito problema, tanto em economia de compra de papéis até redução de funcionários em um quadro (trazendo o ganho na nota).

Java, C#, C++ são muito fortes e dificilmente morrerão

andrebmarinho

As vezes acontece isso aqui no fórum, alguém pede uma orientação sobre linguagem e tudo é transformado em uma “batalha” pra saber qual linguagem é a melhor.

Desconsidere declarações inflamadas e que tratam a linguagem como um “ente querido”. O raciocínio tem que ser frio mesmo, a linguagem foi criada pra ser “usada” e pode ser descartada e substituída a qualquer momento a depender da circunstância.

Não existe isso de linguagem pior ou melhor em si. A depender do cenário vai se optar por uma ou outra.

Uma recomendação, se você quiser pode seguir ou não. Para efeito didático e melhor aprendizado, não é recomendável estudar as duas simultaneamente, pois cada linguagem é um universo. Foque em uma e depois va pra outra.

fventurajr

Acho que um ponto que não foi tocado aqui é que nem sempre tem-se a liberdade de escolher uma linguagem. Em empresas maiores a mudança é mais difícil. Trabalho em uma estatal onde apto a extinção dos “dinossauros”(mainframes) e suas linguagens(Cobol, Easytrieve, …) optou-se por basic até que por uma decisão equivocadamente dada ao pessoal de banco de dados tivemos que engolir um tal de Openroad.

Com o tempo o basic e na web o asp passaram a ser a base e só recentemente migramos para o C#.

j-menezes

Quem programa em Java e é produtivo sabe o quanto Java é bom, e nem por isso a gente odeia ou não programa ou não conhece outras linguagens.

Queria ver se tudo estivesse em Javascript, se você teria toda essa “facilidade”. Podem até defender desenvolver em JavaScript, mas quem tem que dar manutenção sabe que é tão terrível quanto em C/C++. Agora imagina usar uma biblioteca de IA em JavaScript e dá um problema nesse negocio, o cara terá que dançar com o capeta.

Em javaScript, tem horas que Eu olho o codigo aqui, e daqui vai pra lá e de lá vai pra outro lugar, uma hora é em Objeto outra é Procedural, ave maria, isso pra dá manutenção não vai.

Salve Java.

j-menezes

Vixi, acho que você tacou pedra na cruz de Cristo, bom !!! ao menos você é bem remunerado.

javaflex

Usar o paradigma mais apropriado pra cada caso nao é problema. O problema é aplicar mal ou querer usar um único paradigma pra tudo.

andrebmarinho

Importante lembrar que esse post esta disponível na internet pra outras pessoas pesquisarem e de uma forma objetiva poder ajudar nas suas demandas.

Ser radical não vai ajudar em nada as pessoas.

“Vale a pena estudar java?”

No geral eu respondo que sim pois é uma linguagem muito poderosa e muito aceita no mercado, porém pra ser mais preciso eu recomendo cada um avaliar: o que quer? Em que tipo ou que empresa quer trabalhar? Se na região as empresas que pode conseguir vaga possuem desenvolvimento em java?

Por exemplo: Você já é funcionário de uma empresa e essa possui um setor de desenvolvimento, porém a linguagem adotada é Python com framework Django, então vamos pensar um pouco, caso você aprenda Java vai ajudar você conseguir uma vaga no setor de desenvolvimento? hum, acho que nesse caso não vai muito. Entendeu o que estou falando?

A coisa mais certa que temos na nossa profissão é: Tudo vai mudar rapido!

Comecei em tecnologia da informação na metade dos anos 90, já vi muitos profissionais muitos bons desaparecerem do mercado, apenas porque morriam de amores por sua linguagem de estimação e se armavam em verdadeiras trincheiras “intelectuais” a menor ameaça a novas tecnologias, se lançavam com justificativas e mais justificativa pra continuar usando a mesma tecnologia. O tempo passou e eles ficaram presos algum lugar do passado…

Sou repetitivo mesmo, linguagem de programação é apenas uma ferramenta. O bom desenvolvedor vai aprender varias delas da vida e a mágica é saber como e quando usar cada uma, apenas querer “empurrar” de goela a baixo a sua “linguagem” ao mercado não é o caminho.

Aprender a aprender e saber identificar o momento de usar a ferramenta adequada é muito mais inteligente.

j-menezes

O problema é na hora da portabilidade, segurança, performance, manutenção principalmente em codigos de terceiros.
Ai se vê que o tal do paradigma único faz todo o sentido.

Dizer que se quer usar Java pra tudo não faz sentido porque em outras tecnologias a coisa fica mais produtiva, isso nem sempre de fato cobre tudo o que engloba o Java e deve ser pesado com cuidado.

Não me venha com essa de programar em React Native (JavaScript ) ou Flutter (Dart)
ou QT, porque o mercado tá usando ou empresa tal tá usando, Se Eu vou programar sou Eu que tem que medir se será viável ou não.

Quase sempre nessas tecnologias alguma coisa nelas falta que no Java tem de sobra.

Tem muita biblioteca desenvolvida no Java que não deixa nada a a desejar para PHP, Node.js, IA e tantas outras coisas por ai.

Por fim tudo depende da habilidade de cada um, se Eu posso desenvolver em Java, então pra mim é mais fácil aprender uma nova Biblioteca que uma nova linguagem.

j-menezes

Sim, concordo com o seu pensamento, e tenho certeza que linguagens vem e vão e o programador de verdade fica.
Mas tem exageros por aqui, pelo fato de achar que querem e até utilizam ou tentam utilizar Java pra tudo que exatamente tudo de novo que aparece seja de fato melhor que o Java.

Isso nem sempre é verdade, é preciso analisar sem essa paixão toda ou mesmo sem esse ódio todo.

andrebmarinho

Esse tópico já ficou bastante grande e creio que já tem bastante informações aqui suficientes a ajudar a futuros navegantes, porém a internet é rica de informações e tem determinados tipos de materiais que de acordo com sua qualidade, embasamento e relação com o assunto discutido aqui que é um pecado não incluir, segue um vídeo de Fabio Akita, na verdade são dois, mas vale muito a pena assistir até o final os dois.

j-menezes

Sobre os 2 videos.
Claro que linguagens são ferramentas isso todo programador deve saber.

Acontece que com elas nos identificamos mais ou menos, somos mais ou menos produtivos,
nos sentimos mais ou menos confortáveis, sofremos mais ou menos para escrever ou dar manutenção.

E tudo isso conta.

Penso que quem sabe num futuro próximo, existam ótimas ferramentas de conversão de c[pdigo de linguagens para aquela em que o programador melhor se identificada e possa ler
e dar manutenção, sei que já existem alguns conversores, mas ainda são primitivos.

Ou seja, Eu escrevo na linguagem de minha preferencia e você lê tudo que Eu fiz e dá manutenção linguagem na da sua preferencia.

Seria mesmo um absurdo achar que todos vão gostar de uma unica linguagem.

O progresso é constante.

Normalmente se “cria” alguma coisa e em torno dela juntam pessoas e essas desenvolvem para ela. Veja o sucesso do HTML, mas se você olhar bem não precisa ser assim, alias é facinho pra esses caras que vendem cursos enganar pessoas fazendo introspecção no codigo e alterando o valor do saldo que aparece na conta, pra dizer que Ele é o tal e fatura bastante. Podem até argumentar, mas o navegador poderia ocultar tudo isso, sim poderia mas não oculta, e tambem o navegador poderia rodar somente byte code (risos).

Sim, linguagem é uma ferramenta importante e em torno dela acontecem coisas incríveis.

fventurajr

Nem todo problema é prego, nem toda solução é martelo. :wink:

javaflex

É por ai mesmo.

j-menezes

Vou aproveitar esse tópico e citar um caso aqui, quem programa C pra microcontroladores vai entender o que digo e porque o java se tornou o Java.

Se você programar para microcontroladores familia 8051 por exemplo usando SDCC, ou Keil
ou o Side51 ou outro da sua preferencia, é de assustar como que de um para outro muda tudo embora ambos tem em comum a linguagem C e a mesma arquitetura.

Em C dá pra fazer essa bagunça, em Java não.

Em Java você poderá pegar 1000 bibliotecas de terceiros diferentes, mas lá dentro tem o que falta em C, padronização e você rapidamente saca as coisas e a curva é minima.

Não existe Java ansi e Java não ansi.

Ponto pro Java e quem desenvolve nele agradece.

lvbarbosa

Fiquei curioso, o que muda na sintaxe do C de um controlador para o outro? Nunca mexi com isso

j-menezes

Muda a estrutura da biblioteca, a forma de chamar eventos como empilhar, muda tudo, mesmo sendo a linguagem C. Não é a sintaxe em si da linguagem C embora tenha isso tambem, e sim como tudo é organizado.
E por final o compilador vai gerar o mesmo HEX.

lvbarbosa

Mas essas são particularidades dos controladores, não? :thinking: Tem algum impedimento técnico para alguém criar uma especificação padrão e criar os adaptadores da spec padrão para as implementações específicas?

To perguntando pq Java é isso, alguém cria uma especificação e aí a galera vai e adapta os drivers específicos ao padrão. JDBC, por exemplo. Cada banco de dados tem o próprio protocolo. Aí criaram o JDBC para padronizar: cada um vai lá e implementa um adapter, mapeando de JDBC pro driver específico.

Eu fiquei curioso pq talvez tenha algum impedimento que eu não conheça… alguma diferença na sintaxe ou algo que impeça código ansi C de ser compartilhado entre esses compiladores diferentes :thinking:

j-menezes

Não existe impedimento nenhum de padronização do C ansi para microcontroladores, o que acontence em C é que cada um pode pinta e borda e mais um pouquinho, então adeus padronização. A linguagem C possibilita isso.

lvbarbosa

Mas o Java também permite! Nada impede a gente de criar drivers sem obedecer aos padrões estabelecidos.

Eu acho que é muito mais uma característica da comunidade do que da linguagem em si. O que vc acha?

j-menezes

Não é disso que se trata. Quando você cria algo em Java, lá dentro é o Java de sempre, Já em C nem sempre é assim.

Teve uma epoca que a Microsoft fez isso com o Java dela, fugiu dos padrões, e tomou um belo processo da Sun que perdeu até as calças.

Quando você faz um compilador usando o nome Java ele tem que passar por todos os testes
de padronização do Java, caso contrario não é considerado Java.

Witch-king

Para IA eu particularmente recomendo estudar Python e R, mas não precisa se limitar a isso.
Se quiser uma boa maneira de começar com Python, tente esse curso: Python Fundamentos para Análise de Dados

Guilherme_Felipe

livro

Criado 1 de janeiro de 2020
Ultima resposta 7 de jan. de 2020
Respostas 48
Participantes 12