Onde Java é mais indicado que .Net e vice-versa?

45 respostas
B

Senhores,

Para a web, qual das duas plataformas é mais fácil, mais produtiva, mais robusta, mais escalável, possui mais mão de obra, possui mais mercado, etc.

Enfim, sem querer criar qualquer polêmica, gostaria de saber onde o Java é mais indicado do que o .Net e onde o .Net é mais indicado que o Java.

Att.

45 Respostas

Felagund

Existem diversos topicos sobre isso no GUJ e nenhum levou a nada.

Isso aqui vai gerar flame.

B

Felagund:
Existem diversos topicos sobre isso no GUJ e nenhum levou a nada.

Isso aqui vai gerar flame.

OK. Se quiserem trancar este tópico nao tem problema algum.

Foi mal. :oops:

J

Não tem nenhuma indicação. Servem para se fazer a mesma coisa.

maior_abandonado

eu sou iniciante em programação, apesar d econhecer um poquinho de cada, apesar de mais de java, não conheço nenhum dos dois realmente a fundo…

algumas coisas .net me parece ser mais produtivo, para outras prefiro java, porém de uma forma eral eu penso que isso é igual IDE… cada um tem sua preferencia…

Gabriel

Essa pergunta é muito ampla, difícil responder assim.
Acho que quem decide isso é quem desenvolve o projeto.

adriano_si

Seu sistema será multiplataforma ?? O seu cliente pensa em tê-los em servidores distribuídos com SOs diferentes ?? Use Java…

Seu cliente é apaixonado pelo Bill e quer fazer tudo no Windows e nunca mais trocar ?? Use .NET

Claro que há outras diferenças básicas e muitas são relevantes, como o avanço da Plataforma em sí… Produtividade ??? isso pra mim é relativo… se produtividade é deixar que uma IDE faça muitas coisas por vocês magicamente… sim, .NET é mais produtivo, apesar que o NetBeans já faz umas mágicas legais… Mas no geral é isso aí…

Falows :wink:

thokk

adriano_si:
Seu sistema será multiplataforma ?? O seu cliente pensa em tê-los em servidores distribuídos com SOs diferentes ?? Use Java…

Seu cliente é apaixonado pelo Bill e quer fazer tudo no Windows e nunca mais trocar ?? Use .NET

Claro que há outras diferenças básicas e muitas são relevantes, como o avanço da Plataforma em sí… Produtividade ??? isso pra mim é relativo… se produtividade é deixar que uma IDE faça muitas coisas por vocês magicamente… sim, .NET é mais produtivo, apesar que o NetBeans já faz umas mágicas legais… Mas no geral é isso aí…

Falows ;)

Concordo, pois acho que se o sistema não depende do SO, deve usar sem questionamento Java, agora se o cliente prefere as ferramentas do tio Bill deve usar o .net. Mas lembrando nem tudo da pra usar com arrastar e soltar no .net, fique 6 meses mexendo com ele, tem que criar as classes que vão interagir. Mas o Java acho muito mais robusto e me atende da melhor forma quando eu preciso.
O comentario acima é super válido.

adriano_si

verdade… por isso usei a palavra MUITAS e não TODAS pra dizer o que a ferramenta pode fazer no arrastar soltar… usei quase isso e gostei pra caramba…

Falows :wink:

Gabriel

Eu ia começar uma discussão aqui mas achei melhor deixar pra lá.
Só acho que muita gente fala sobre o que não sabe com muita autoridade e ainda se ilude com muita coisa.
Whatever…

thiago.correa

Eu acho melhor usar java no meu emprego, pois se eles trocarem para .Net daí vou ter que procurar outro :slight_smile:

Acho que você é quem deve saber melhor a resposta do que qualquer um de nós.

Vai muito do que você está levando em consideração mesmo, ambas possuem profissionais, uns dizem que .Net é mais produtivo que Java, porém não conheço nenhum case grande que seja em .Net.

Já ouvi muitos elogios sobre as ferramentas da MS, a velocidade que o projeto vai andar, vai depender E MUITO da qualidade dos profissionais contratados, o tão quanto foi especificado o requisito, se você contratar um cara que era do PHP para programar em .Net ou Java, e especificar mal e porcamente, é óbvio que o teu projeto corre um sério risco de estourar o prazo!

Antes de exigir robustez e escalabilidade, você tem que definir o que é aceitável para o seu projeto, 10, 20, 100, 1000 usuários simultâneos?! Tempo de resposta, tempo-real, 1~5 seg?! Não adianta instalar um servidor (windows ou *nix) e o seu respectivo servidor de aplicação sem configurá-lo.

Bom ta aí o meu relato, espero ter ajudado!

adriano_si

Cara… uma dica… aprenda .NET, posso dizer que vale a pena…

Abraços :wink:

Hellmanss

Dica inválida. quáááááác

:lol: :lol: :lol:

peczenyj

Com MONO vc ganha (um pouco) no quesito multiplataforma :wink:

J

falou bem. Ele não suporta todas as coisas do bill, mas no quesito opensource é 100%.

guariba

Que pergunta para um fórum Java…

T

Ora, é questão de manter a mente aberta. Só porque este é um fórum Java não há razão para sermos xiitas; se .NET resolve um problema melhor que Java, por que não usar .NET? Ou então, se Python resolve um determinado problema, porque não usá-lo? Depende sempre de uma análise melhor do problema (nenhum problema existe em um vácuo).

adriano_si

Hellmanss:
Dica inválida. quáááááác

:lol: :lol: :lol:

Hehehehe, cada um aproveita dica como quer, repassei uma que recebi… Eu to aprendendo…

Falows :wink:

felipeguerra

thingol:
Ora, é questão de manter a mente aberta. Só porque este é um fórum Java não há razão para sermos xiitas; se .NET resolve um problema melhor que Java, por que não usar .NET? Ou então, se Python resolve um determinado problema, porque não usá-lo? Depende sempre de uma análise melhor do problema (nenhum problema existe em um vácuo).

É verdade, estão fazendo um sw aqui para capturar dados biométricos, qualificar as imagens e umas coisas mais fodas…como há comunicação com hardware, o C# está sendo usado com o C++ no Visual Studio 2008, ficou bom [olhando como usuário].

Queria saber como ficaria em Java…

J

o profissional apegado em tecnologia só perde no mercado.

Sobre C# e c++, dá para se fazer a mesma coisa com java. Só acho que o Gosling pecou no jni. Com c# realmente é bem mais fácil.

Felagund

juliocbq:
o profissional apegado em tecnologia só perde no mercado.

Disse tudo.

Assino em baixo.

maior_abandonado

dando meu pitaco…

se for pra mecher com hardware, é verdade, .net me parece ter uma api mais simples e funcional no que se refere a isso. Outro ponto também é que o silverlight me parece ser mais maduro do que JavaFx por exemplo… eu nem sei o que pensar do flex, tem gente que fala bem, tem gente que fala mal… apesar de q o silverlight me parece estar fazendo bastante barulho (nesse tipo de tecnologia eunão conheço, não da pra eu fazer comparações mais precisas do que isso)

em contrapartida de um modo geral java tem mais versatilidade, especialmente pra coisas grandes… de um modo geral eu considero a api do java mais bem projetada… tem coisas que não gosto na api do .net, por exemplo o HashTable que, assim como no Java não pode ter chaves repetidas mas, se vc tenta adiciona um valor com chave repetida ao invéz dele não adicionar (e retornar um boolean avisando se inseriu ou não), ou substituir o valor existente daquela chave, sei la, ele lança uma exceção… a api do java tb tem seus defeitos e ja vi tópico de gente que conhece muuuito mais do que eu falando desses defeitos…

de um modo geral ambas as linguagens/plataformas tem pontos fortes e fracos onde o que define qual é melhor normalmente é qual que os programadores tem mais familiaridade… com qual eles se viram melhor…

minha opinião

J

pra mim, tanto faz, se me pedirem um projeto, em qualquer linguagem eu me viro. Mas escolho a que resolve o problema, e metraz mais comodidade.

Marcio_Nogueira

Em termos de facilidade e produtividade o .Net é imbatível. :wink:

Felagund

Discordo de vc.

Eu sou muito mais produtivo usando Java ou Ruby que .NET ou PHP.
Me viro em qualquer uma dessas linguagens, mas não sei produzir metade do que sei em java em .NET (isso que eu sei pouco de Java).

Mas ai eu acredito q é de cada um. Muita gente se adapta muito melhor ao .NET, eu trabalhei um mês com .NET garrei raiva ehhehehehe.

Vai de cada um.
A melhor ferramenta é a que vc se sente melhor em trabalhar.

[]'s

Jair_Rillo_Junior

Lembre-se que produtividade não é apenas medido em relação a quanto tempo você leva para construir uma funcionalidade, mas também a sua manutenção, mudanças e etc…

B

verdade… por isso usei a palavra MUITAS e não TODAS pra dizer o que a ferramenta pode fazer no arrastar soltar… usei quase isso e gostei pra caramba…

Falows ;)

Como que fica o código depois de vários desses arrastar e soltar?

O coitado que fizer a manutenção vai te xingar?

Gabriel

verdade… por isso usei a palavra MUITAS e não TODAS pra dizer o que a ferramenta pode fazer no arrastar soltar… usei quase isso e gostei pra caramba…

Falows ;)

Como que fica o código depois de vários desses arrastar e soltar?

O coitado que fizer a manutenção vai te xingar?

Geralmente código auto-gerado não é muito bonito…

adriano_si

verdade… por isso usei a palavra MUITAS e não TODAS pra dizer o que a ferramenta pode fazer no arrastar soltar… usei quase isso e gostei pra caramba…

Falows ;)

Como que fica o código depois de vários desses arrastar e soltar?

O coitado que fizer a manutenção vai te xingar?

Não vou entrar na questão agora, acho que o tópico levou a uma discussão sadia e legal… mas se vc ler, verá que não falei bem desse arrastar e soltar e nem muito menos disse que uso apenas isso em .NET, é só seguir a Thread do tópico… mas blz…

Falows :wink:

J

juliocbq:
o profissional apegado em tecnologia só perde no mercado.

Sobre C# e c++, dá para se fazer a mesma coisa com java. Só acho que o Gosling pecou no jni. Com c# realmente é bem mais fácil.


[/quote]

Ainda bem que com Java é mais difícil. Em qualquer projeto, a arte é dificultar
aquilo que vc não quer que seja usado. Se fosse mais fácil usar JNI,
talvez a tentação de usar código nativo desnecessariamente seria bem
maior, principalmente no início. Essa quebra foi fundamental no início
do Java.

O uso generalizado de máquinas virtuais (JVM ou CLR) é uma grande benção.
Não quero nem imaginar como seria o desenvolvimento de aplicações
hoje se C/C++ continuasse dominante.

Jorge

fantomas

É mais produtivo quando vc precisa construir softwares multiplataforma que serão executados em servidores.

flws

J

Que conversa fiada amigo. Você vai desenvolver device drivers com java, c# ou phyton? Cada coisa no seu lugar. O acesso a hardware é muito importante em determinadas situações. O jni criou um empecilho no desenvolvimento de determinadas aplicações com java.

sobre c/c++, dê uma olhada em www.sourceforge.net

T

Jorge Diz:
juliocbq:
o profissional apegado em tecnologia só perde no mercado.

Sobre C# e c++, dá para se fazer a mesma coisa com java. Só acho que o Gosling pecou no jni. Com c# realmente é bem mais fácil.

Ainda bem que com Java é mais difícil. Em qualquer projeto, a arte é dificultar
aquilo que vc não quer que seja usado. Se fosse mais fácil usar JNI,
talvez a tentação de usar código nativo desnecessariamente seria bem
maior, principalmente no início. Essa quebra foi fundamental no início
do Java.

O uso generalizado de máquinas virtuais (JVM ou CLR) é uma grande benção.
Não quero nem imaginar como seria o desenvolvimento de aplicações
hoje se C/C++ continuasse dominante.

Eu sei muito bem o que é isso - estou em um grande projeto onde faço algumas coisas em C++. Quando ocorre um bug é um inferno descobrir onde e quando ocorreu - um simples stack trace é quase impossível obter sem espetar um depurador, o que não é viável em produção. E as bibliotecas de uso geral (como o Boost) não são tão disseminadas e debugadas quanto as usadas pelo Java.
Os programas em C# que se desenvolvem aqui usam muitas DLLs que foram desenvolvidas em C++/CLR, mas não foram devidamente otimizadas e conseguem ser mais lentas que um programa em Java equivalente.
O grande problema é que aqui o pessoal tem um pouco (só um pouquinho) de medo de “garbage collection” - só que o GC do .NET é bem mais tosco que o do Java. Não deveriam estar usando Windows, por exemplo, que não garante de forma nenhuma um tempo de resposta para suas aplicações. Um Solaris (ou talvez uma máquina da AzulSystems :stuck_out_tongue: ) seria bem mais adequado para os requisitos de tempos de resposta que são solicitados.

J

Não podemos generalizar isso, porque todos nós aqui trabalhamos em áreas diferentes. JNI não é questão de performance. Onde eu trabalho desenvolvemos aplicações de segurança. Essas aplicações precisam se comunicar com hardware, então a dificuldade do JNI me atrapalha muito. Tenho usado muito mais c# devido ao tempo que levo em escrever o equivalente a jni.

Kenobi

Vcs já chegaram a dar uma espiadinha em JNA - https://jna.dev.java.net/ ?

J

juliocbq:

Que conversa fiada amigo. Você vai desenvolver device drivers com java, c# ou phyton? Cada coisa no seu lugar. O acesso a hardware é muito importante em determinadas situações. O jni criou um empecilho no desenvolvimento de determinadas aplicações com java.

sobre c/c++, dê uma olhada em www.sourceforge.net

Não, não vou desenvolver device drivers em Java. Já fiz isso em assembly do 8086 e em C,
há muuuito tempo. E há muito tempo que não preciso fazer isso de novo, graças ao bom Deus.
Prefiro mil vezes uma NullPointerException que uma SegmentationFault. Não tenho saudade
dos 15 anos que passei mexendo com C e C++.

Felizmente, trata-se agora de um nicho, que é uma situação diferente de precisar usar código nativo
na maioria das aplicações, como acontecia até 10 anos atrás. Qual é a proporção de profissionais,
hoje, que necessita escrever em C/C++ ? Mais ou menos a mesma que precisava usar assembly
naquela época …

Se JNI foi um obstáculo à adoção do Java, parafraseando o excelentíssimo sr. presidente,
tratou-se de uma marolinha comparada com o tsunami que tem tomado conta da infraestrutura
das empresas a partir de ~2000.

Concordo que JNI não é a melhor API do mundo. Quando precisei interfacear com código nativo
usei JACE em vez de JNI na unha. Não existia ainda o JNA, que parece ter melhorado a situação.
De qualquer forma, se vc realmente precisa, tem as ferramentas para fazer. Se fosse muito
mais fácil, acho que muitas pessoas teriam misturado código nativo desnecessariamente.

Infelizmente, vc está num nicho onde essa dificuldade dói. Faça de conta que é o
abstêmio da turma que vai dirigir para que os outros possam aproveitar a cervejada.

[]s

Jorge

J

A proporção dos profissionais que escrevem c ou c++ é enorme. São eles que escrevem sistemas operacionais e a maioria da tecnologia, e apis que vc usa. É só olhar no www.codeproject.com e no www.sourceforge.net.

Se vc não precisa codificar em c ou assembly hoje, e achava ruim, é o seu gosto. Mas é inegável a necessidade delas no dia a dia de certas áreas.

Eu não sinto nenhuma dificuldade de usar assembly, c ou pascal, nem teho nada contra. Eles são necessários para resolver meus problemas.

O JNA é um recurso muito bom que implementaram, mas ainda está longe do pinvoke do c#, fora unsafe.

jtsato

Concordo em Partes. Acho que o forte não é a linguagem e sim a IDE. O Visual Studio é muito produtivo.

Mas em termos de Linguagem, o Java é a Coca-Cola e o C# é a Pepsi.

Thiagosc

Bruno_Leonardo:
Senhores,

Para a web, qual das duas plataformas é mais fácil, mais produtiva, mais robusta, mais escalável, possui mais mão de obra, possui mais mercado, etc.

Enfim, sem querer criar qualquer polêmica, gostaria de saber onde o Java é mais indicado do que o .Net e onde o .Net é mais indicado que o Java.

Att.

O que é “marana fa” do seu avatar?

L

Olha sou trabalho com .net “C#” como professor e como desenvolvedor “java” na empresa, vai depender do que você vai quer fazer, particularmente eu gosto mais do java por ser uma ferramente free…e tudo mais, mas não quer dizer que ele seja nem melhor nem pior, vai depender do seu projeto, do dominio da linguagem etc…

t+

louds

Seu argumento é falacioso. O fato do acesso a código nativo no Java ser tão complexo
só causa problemas até hoje para a plataforma - o contrário está longe de ser verdade.

Java é até hoje o patinho feito quando o assunto é, por exemplo, escrever uma aplicação integrada
ao desktop. Enquanto o AWT foi um enorme fracasso, o Swing tomou proporções épicas. Enquanto com
a CLR é possível fazer o binding de uma API escrita com C em poucos minutos, com Java leva uma semana.

Só comparar, por exemplo, os bindings para QT, KDE, GNOME e GTK+ para Java e Mono. Os do Java são
continuam uma piada. E a Java-ObjC bridge? Uma porcaria. Para o Mono existem 4 projetos distintos de binding.

Porém isso não se limita a aplicações desktop. Embutir Java dentro de outras aplicações é um sofrimento tão grande
por conta do JNI que ninguém mais tenta.

Essa atitude altista por parte da Sun limitou em muito o alcance da plataforma de forma que hoje é basicamente financeiramente
inviável inovar com ela. Basta ver que as principais plataformas lançadas nos últimos 3 anos (PS3, XBOX360, Wii, iPhone) não existe
nem sinal de rodarem Java.

Por fim, argumentar que essa decisão foi tomada pensando no melhor para os desenvolvedores pois alguns poderiam abusar disso é
muita condescendência, infantilização, mas também tratá-los por estúpidos. Foi uma decisão errada e o Stanford Ego prevaleceu.

victorwss

No mercado desktop, o java sempre ficou atrás do VB, do delphi, do C, do C++ e de outras linguagens. Não sei como é o caso do C# / .NET, mas acredito que estão muito mais a frente que o java.

O que acontece é que criar interfaces visuais no java é uma tarefa árdua e muito mais trabalhosa que em qualquer outra linguagem, principalmente por conta daqueles gerenciadores de layout pobres, pouco usáveis e non-sense. Há ferramentas e APIs de terceiros por aí que deixam esse trabalho mais tranquilo, mas mesmo assim é muito mais fácil fazer em VB ou delphi.

Não obstante, a API do swing não está entre as melhores. Cheio de regras estranhas e desnecessariamente complicadas que são produto de uma especificação mal-planejada (ex: setar o foco, JTable, usar a Event-Dispatch-Thread corretamente). Há vários métodos que deveriam ser privados, mas estão expostos como públicos, há uso excessivo de herança, o que deixa a documentação difícil de entender e a API difícil de aprender. Além disso, boa parte dos mitos dos java (ex: “java é lento” e “java é uma linguagem cheia de frescuras”) tem certa parcela de culpa no swing. Ainda mais que só no java 5 é que o swing começou a ter uma performance decente. Curiosamente a performance no java 6 é em geral superior ao do delphi, mas o java demorou demais para conseguir isso. Quanto a parte das frescuras, é tanta regra e restrição idiota, que sem dúvida dá para dizer com plena convicção de que o swing é cheio de frescuras.

Eu acredito que se a API do swing e do AWT fosse mais bem planejada e principalmente, mais fácil de ser usada e aprendida, hoje o pessoal estaria falando de VB e delphi da mesma forma que falariam do clipper.

Recentemente chegou o JavaFX para tentar salvar a situação, vamos torcer.

No entanto, apesar disso, o swing ainda tem algum espaço no mercado, pouco mas tem. Eu pessoalmente já trabalhei em três projetos comerciais sérios usando swing, de 2006 para cá.

bsmachado

Olha discordo, tem muitos sistemas Desktops em empresas que são desenvolvidos com Java, em cima deles tem a opção de migrar para a web, sem perder o que foi feito, mas assim Java e .Net podem ser usado em ambos os casos, mas na área de celulares e Palms, acho que Java leva vantagem, um pouco…
Como foi dito anteriormente, depende do projeto…
:wink:

M

Deixa ver se entendi, voce credita o sucesso dessas plataformas à sua linguagem? Agora estou curioso, qual seria entao a linguagem responsavel pelo sucesso do windows por exemplo? :twisted:

Atualmente eu acho que a linguagem adotada por cada plataforma teve uma influencia muito baixa, pra nao dizer nenhuma, no sucesso da mesma.

Mas falando de plataformas, curiosamente, hoje vi a Sun anunciando uma Java App Store para a maior plataforma de executacao de aplicacoes que existe, o Windows!

Segue o link:
http://blogs.sun.com/jonathan/entry/will_java_be_the_world

Se for verdade, é um ponto a mais pro Java em relacao ao seu concorrente tradicional.

J

Tem razão. Vem sendo um sacrifício enorme desenvolver determinadas aplicações, em conjunto com a engenharia eletrica, justamente por causa da dificuldade do jni. Como foi dito num post, existe o recurso do jna. Mas mesmo assim, ainda complica em relação ao pinvoke c#. A equipe da sun deveria rever alguns recursos da linguagem realmente.
Eu até desejaria um byte não sinalizado. Mas é uma opinião pessoal.

louds

Não disse isso. Nem por sofismo teria como chegar nessa sua conclusão. O fato é, Java é um fracasso nestas plataformas e por que elas fazem sucesso realmente não importa. Java, como plataforma, está cada vez mais se entrincheirando e virando nichos.

Criado 18 de maio de 2009
Ultima resposta 25 de mai. de 2009
Respostas 45
Participantes 26