Java ou C#?

Tu acha mais fácil JAVA do que C# ?

Abraços e obrigado.

Haha JAVA lógico!

[quote=entanglement]Sei que o C# é cópia do Java. Não é bem assim. Dá para fazer isso trivialmente em Java?

[code]
using System;
using System.Linq;

class Program
{
static void Main()
{
int[] array = { 1, 2, 3, 6, 7, 8 };
// Query expression.
var elements = from element in array
orderby element descending
where element > 2
select element;
// Enumerate.
foreach (var element in elements)
{
Console.Write(element);
Console.Write(’ ');
}
Console.WriteLine();
}
}
[/code][/quote]

Sim. No Java é trivial no sentido que qualquer programador júnior sabe executar uma query. Se ficar muito ruim é só varrer pra dentro de um framework caseiro.

Linha de código não é diferencial em TI. Contar com programadores dispostos a ganhar 1/3 do salário sim.

[quote=Botocudo][quote=entanglement]Sei que o C# é cópia do Java. Não é bem assim. Dá para fazer isso trivialmente em Java?

[code]
using System;
using System.Linq;

class Program
{
static void Main()
{
int[] array = { 1, 2, 3, 6, 7, 8 };
// Query expression.
var elements = from element in array
orderby element descending
where element > 2
select element;
// Enumerate.
foreach (var element in elements)
{
Console.Write(element);
Console.Write(’ ');
}
Console.WriteLine();
}
}
[/code][/quote]

Sim. No Java é trivial no sentido que qualquer programador júnior sabe executar uma query. Se ficar muito ruim é só varrer pra dentro de um framework caseiro.

Linha de código não é diferencial em TI. Contar com programadores dispostos a ganhar 1/3 do salário sim.[/quote]

Cara, que pérola…

No java não existe um equivalente Linq. Existe expressões lambda com uma biblioteca de terceiros, mas ainda assim é bem mais complicada do que as expressions do Linq.

[quote]Tu acha mais fácil JAVA do que C# ?

Abraços e obrigado.[/quote]

Não que Java seja mais fácil que C#, o fato é que o Java é mais implementado no mundo acadêmico e em cursos, assim é mais fácil encontrar material.
Fora que no Java tem outro fator, as comunidades de desenvolvimento são mais ativas, a línguagem é mais popular, e qualquer dúvida é respondida de imediato.
O nicho tecnológico do C# é muito restrito ao ambiente empresarial, não muito presente no acadêmico, as comunidades são meio lentas para responderem algo, e no final você acaba indo ao MSDN.

Por esta única razão o Java é mais fácil, mas também não quer dizer que C# seja difícil.

Entendi amigo, e é por este motivo que eu resolvi partir para java. Pois percebo que o material é mais acessível e o mercado de trabalho pede mais java do que .net

Após aprender java, acredito que para aprender outras linguagens, só vai…:slight_smile:

Só pode ser uma || outra :?: Por que não as duas, && outras “de brinde” :?:

:thumbup:

Claro, pode ser duas sim, esse é meu objetivo futuro. O problema é que eu não quero atropelar as coisas por que eu tenho uma certa dificuldade em programação, então eu gostaria de iniciar apenas em uma. Se eu tentar aprender duas de uma vez, é capaz de eu acabar não aprendendo nada, entende?

Rafael

Fique tranquilo.

Quanto você estiver manipulando bem classes abstratas e interfaces, dê um pulo no c# e você vai ver que o que muda é keyword.

imports
using

package
namespace

for(object o : objList)
foreach(object o in objList)

JAR
DLL

Tomcat
IIS

Eclipse
Visual Studio

:smiley:

E simplicidade importa? Entre a solução simples e cara e a outra complicada e barata, tem muita empresa ficando com a segunda.

Entendo que vc esteja encantado com linq, mas geneticamente falando, C# continua sendo cópia do Java.

[quote=Botocudo][quote]
Cara, que pérola…

No java não existe um equivalente Linq. Existe expressões lambda com uma biblioteca de terceiros, mas ainda assim é bem mais complicada do que as expressions do Linq.
[/quote]

E simplicidade importa? Entre a solução simples e cara e a outra complicada e barata, tem muita empresa ficando com a segunda.

Entendo que vc esteja encantado com linq, mas geneticamente falando, C# continua sendo cópia do Java.[/quote]

A questão de C# ser a cópia do Java é indiscutível, todos sabemos que é verdade.

No entanto discordo o fato da simplicidade não importar. Imagine o seguinte:

A empresa de software A detém um contrato com aconstrutora B.
A tem um prazo a cumprir em relação a B, caso não o faça, B cobrará uma multa pelo não-cumprimento do contrato. O Gestor de TI não quer saber COMO funciona, ele quer saber SE funciona.
Se é mais fácil em C#, eles adotam C#, o que ocorreu aqui na empresa onde trabalho. O ganho de produtividade foi absurdamente gigante.

Se java é complicado e barato, essa frase não condiz com a realidade.
Já que, apesar de ser gratuito, o profissional de desenvolvimento Java é bem mais caro.
Assim sendo ele contrata 2 juniores, uma cópia do VS team e tem uma equipe produtiva e com simplicidade.
O Java é o barato que costuma sair caro.
.Net é o caro que sai baratíssimo.

Hoje trabalho com uma equipe que está totalmente migrando pra .Net por conta das facilidades. Posso te garantir que estamos diminuindo praticamente para a metade os custos de desenvolvimento e tendo melhores resultados com a nova equipe.

Quem é mais vantajoso? A simplicidade do C# ou a gratuidade do Java?

Para finalizar os números:

Analista Java R$ 5.800,00 * 13
Total R$ 75.400,00 / Ano

Analista .Net R$ 3.500,00 * 13
Lic VS Team R$ 2.200,00 * 1
Total R$ 47.700,00 / Ano

Mostra esses cálculos para um gerente de TI que ele compra o Visual Studio e migra todas as soluções.

Interessante essa questão do C# ser mais produtivo.

De fato Java não evolui a muito tempo e talvez a linguagem já esteja mostrando sinais do tempo.

Mas acho que no fim a melhor escolha depende do que é mais usado na sua região. Procure se informar sobre o que as empresas da sua cidade estão usando e agir de acordo.

[quote=doravan]
Quem é mais vantajoso? A simplicidade do C# ou a gratuidade do Java?

Para finalizar os números:

Analista Java R$ 5.800,00 * 13
Total R$ 75.400,00 / Ano

Analista .Net R$ 3.500,00 * 13
Lic VS Team R$ 2.200,00 * 1
Total R$ 47.700,00 / Ano[/quote]

Vou inventar salários também

Analista PHP R$ 2.500,00 * 13
Total R$ 32.500,00

PHP melhor linguagem ever!!!111!1

OBS: Cadê o preço do Windows Server + SQL Server

[quote=victorcosta][quote=doravan]
Quem é mais vantajoso? A simplicidade do C# ou a gratuidade do Java?

Para finalizar os números:

Analista Java R$ 5.800,00 * 13
Total R$ 75.400,00 / Ano

Analista .Net R$ 3.500,00 * 13
Lic VS Team R$ 2.200,00 * 1
Total R$ 47.700,00 / Ano[/quote]

Vou inventar salários também

Analista PHP R$ 2.500,00 * 13
Total R$ 32.500,00

PHP melhor linguagem ever!!!111!1

OBS: Cadê o preço do Windows Server + SQL Server[/quote]

Não inventei salário, falei dos salários da minha equipe.

O fato do Java/Postgres ser gratuito não barateia máquina. Empresas comerciais de grande porte utilizam Oracle ou SQL Server, porque quando você paga pela ferramenta, você tem um suporte mais “responsabilizável”. Se o negócio não funciona como devia, tome-lhe indenização.

O custo elevado dos profissionais java/postgres não são calculados somente no período de 1 ano, veja em 5 anos a mesma equipe.
Vou colar um orçamento ficto com base no nosso último orçamento.

Vr Unitário	Quantidade	                        2012	        2013	    2014	2015

Máquinas Windows 7 Professional 1325 22 29150 0 0 0
Máquinas Linux 1180 22 25960 0 0 0
Servidor Dell Blade 12400 4 49600
Windows Server 2008 1499 4 5996
SQL Server 2012 Enterprise 6822 1 6822
Analista Java 75400 2 150800 150800 150800 150800
Analista .Net 28600 1 28600 28600 28600 28600
Programador Jr. Java 23400 4 93600 93600 93600 93600
Programador Jr. Net 16900 2 33800 33800 33800 33800

	Totais	        424328	306800	306800	306800
	Totais .Net	        104368	62400	62400	62400
	Totais Java	244400	244400	244400	244400

Lógico que os cálculos foram bem mais detalhados do que esse ficto aí.

Vimos que, o que gastaríamos com um ambiente .Net tinha um custo inicial relativamente elevado, o que é o caro que sai barato.

Entenda que, soluções Java requerem mais profissionais, pois as técnicas são mais difíceis de ser implementadas.
Assim sendo, o que investimos em equipamentos .Net foi o equivalente a metade de um ano de salário da equipe Java. Ao passo que, os custos com a equipe net não chegam nem a 25% do custo da equipe java.

Por esta razão, o Gerente de TI não quer saber de Java é melhor ou pior, ele quer saber qual é mais barato e dá mais produtividade.

É a primeira vez que vejo um profissional de TI escolher a área que paga pior salário pra ele e considerar isso uma vantagem. hehehe

Eu já vejo .NET como o contrário: o barato que sai caro. É muito produtivo fazer GUIs, tem alguns comandos que reduz algumas linhas de código, etc. Mas te deixa tão engessado e fechado nas plataformas dela que o profissional aprende é a IDE e não a linguagem ou tecnologia. Então você até consegue programar bem de cara, um junior consegue fazer uma aplicação, mas quando você precisa de algo mais sofisticado, vai descobrir que o seu profissional Visual Studio não vai conseguir fazer. E vai chegar à conclusão de que a tecnologia nunca foi o mais importante para o analista, mas sim o domínio dele de problema e a capacidade de análise, comunicação, entendimento do negócio, etc.

E pra esse profissional, independentemente da linguagem de programação, o salário é mais caro. E a maioria deles estão no Java. Então, ou você fica com um programa mediano e bugado porque seu analista é baratinho, ou vai atrás dos poucos bons analistas que estão trabalhando com .NET e desempregados. E vai ter a surpresa de ver que o salário deles é o mesmo dos bons analistas Java.

[quote=marcosalex][quote=doravan]
Já que, apesar de ser gratuito, o profissional de desenvolvimento Java é bem mais caro.
[/quote]

É a primeira vez que vejo um profissional de TI escolher a área que paga pior salário pra ele e considerar isso uma vantagem. hehehe

Eu já vejo .NET como o contrário: o barato que sai caro. É muito produtivo fazer GUIs, tem alguns comandos que reduz algumas linhas de código, etc. Mas te deixa tão engessado e fechado nas plataformas dela que o profissional aprende é a IDE e não a linguagem ou tecnologia. Então você até consegue programar bem de cara, um junior consegue fazer uma aplicação, mas quando você precisa de algo mais sofisticado, vai descobrir que o seu profissional Visual Studio não vai conseguir fazer. E vai chegar à conclusão de que a tecnologia nunca foi o mais importante para o analista, mas sim o domínio dele de problema e a capacidade de análise, comunicação, entendimento do negócio, etc.

E pra esse profissional, independentemente da linguagem de programação, o salário é mais caro. E a maioria deles estão no Java. Então, ou você fica com um programa mediano e bugado porque seu analista é baratinho, ou vai atrás dos poucos bons analistas que estão trabalhando com .NET e desempregados. E vai ter a surpresa de ver que o salário deles é o mesmo dos bons analistas Java.[/quote]

Rapaz, concordo plenamente contigo. As comunidades .net são a prova do baixo nível dos profissionais .net em relação aos javaboys.

O problema é que, quando se vai pro mundo corporativo, se o gerente for ficar esperando pelo código perfeito, ou pelo bugado imediato, ele prefere o bugado imediato, justamente por conta do prazo.
Nesse fator as empresas têm uma alta rotatividade de empregados Juniores e Plenos, com pouca rotatividade de Analistas e Sêniores.
Pode procurar aí no mercado qualquer empresa do ramo, indique um refactor, eles vão dizer que não dá tempo, que o prazo tá apertado e que é melhor ir com bug do que pagar multa.

Nesse intuito, eles contratam dois caras bons para fazer especificação técnica, e uma penca de inexperientes pra dar andamento aos projetos.
O ruim é que, como no Java tudo é mais hard-coded, e pouco visual, eles preferem distribuir o VS pra forms rápidos, daí o cara cria um evento e bota tudo nele, inclusive SQL, com bug, sql injection e o escambal, porém ele vende o peixe bem rapidinho… Daí você tira que a vantagem do profissional de pior qualidade é somente a de agilizar o bug.

Isso não é verdade, o programador java, na média, não é melhor nem pior que o programador .NET, não pelo que eu tenho visto. Existem bons e maus nos dois lados e em proporções parecidas. É como o marcos falou, é função do bom programador saber as melhores ferramentas para cada tarefa.

Não, se a opção for o código perfeito ou o bugado imediato o gerente vai optar sempre pelo código perfeito. O que ele não gosta é de trocar o bugado imediato pelo futuro hipotético código perfeito que nas outras 450 vezes que ele esperou, nunca veio. Não que isso tambem não seja culpa dele, mas enfim…

Refactor não tem que ser indicado, ele tem que ser feito. Voce faz e pronto, um gerente não tem que ser a favor nem contra, nao tem que dizer sim, nem não, ele apenas tem que ser comunicado, quando muito.

Agora, se o cara leva duas semanas pra fazer algo que deveria ser feito em dois dias é um forte sinal de que ele não sabe o que está fazendo. Refactoring voce faz sempre, toda vez que poe a mao no codigo, todo dia um pouquinho e assim o codigo vai melhorando. Se voce chegar pra mim e disser que vai jogar fora o codigo que existe e fazer tudo de novo eu vou dizer não em 90% dos casos. 1) Isso não é refactoring, isso é reescrever algo que já existe. 2) Quem me garante que dessa vez voce vai fazer melhor que na primeira tentativa?

Voce refatora o ponto em que voce vai mexer, arruma o que precisa para aquilo que voce vai alterar, poe teste pra garantir que vai funcionar e altera. Qualquer linha de codigo que voce altere fora do ponto em que voce está trabalhando é um risco desnecessario.

Essa é a causa de muitas empresas estarem sempre com a corda no pescoço nos seus projetos. Voce acha que eles gostam disso? De chegar no final do prazo e estar tudo estourando, tudo bugado, tudo correndo.

O problema esta na matematica simplista deles (isso foi discutido a exaustao em outro topico recente). Ter dois caras bons pra fazer especificacao tecnica e um exercito de juniores pra implementar não funciona, nunca funcionou e nunca vai funcionar.

Primeiro porque programador junior produz uma quantidade imensa de bug e quanto mais programadores juniores sem supervisao, mais bugs no sistema, até que ele entre em colapso ou que sejam trazidos seniores pra arrumar a casa (normalmente tarde, com tudo feito as pressas, na correria, correndo risco de comprar gato por lebre na hora de contratar).

Segundo porque especificacoes tecnicas não são capazes de carregar todo o conhecimento necessario para implementá-las e quanto mais se tenta colocar la tudo o que é preciso, mais tempo se leverá para criar uma especificacao dessas. No fim das contas para criar um documento desses levara o mesmo tempo que levará para implementá-lo. Mas depois de implementado só o código importará, o documento vai pro lixo (onde lixo == uma gaveta que nunca mais vai ser aberta). Então para que diabos fazero documento??? O proprio analista tem que saber implementar a regra que ele esta querendo transformar em software e se ele não é capaz disso que vá jogar ping pong.

Uma equipe de dois especificadores e um exercito de programadores juniores pode ser perfeitamente substituida por dois bons analistas/programadores um bom programador com base solida em infra-estrutura e um programador junior para tarefas menos complexas, mas com potencial para se tornar um bom programador.

Muitos gerentes ficariam de queixo caido se vissem o tanto de gente que uma equipe assim é capaz de substituir. O problema é que, ainda que se queira, formar uma equipe assim, não é tarefa fácil.

Essa, na minha opinião, é uma visão no mínimo desinformada da tecnologia. Estou usando o .Net há alguns anos e não recaí em uma situação sequer que isso tivesse chegado perto de acontecer.
Especialmente usando as tecnologias recomendadas, como o MS MVC, Razor, etc… O problema é que muita gente sai usando WebForms, que a própria MS só recomenda que seja usado para sites pequenos, para tentar fazer site grande. Ou cai na falácia de achar que editores visuais vão fazer milagres e transforma-la num excelente programador da noite para o dia.

Aí é a mesma coisa que tentar fazer uma aplicação web inteira usando applets, e reclamar que o Java não é bom para fazer sites.
Ou tentar acreditar que o Matisse com bindings será a grande solução para os problemas de desempenho do seu time.

Agora, discordo também de quem fala que .Net é muito mais produtivo do que Java. Fazer aplicações comerciais profissionais não é uma tarefa trivial em linguagem nenhuma. As APIs ajudam, mas não fazem milagres.
No final, o ritmo de produção é basicamente o mesmo. Você ainda terá que projetar corretamente as camadas, ainda terá que gerenciar uma equipe, ainda terá que ter programadores disciplinados, que não tenham preguiça de escrever testes.

Hoje, ambas as plataformas estão tão maduras, que a discussão tem que ser mesmo no que o Marcos falou: Que tipo de programador tem na sua equipe?
Um cara ruim vai tornar a vida da equipe improdutiva, seja em Java, C#, C++ ou em PHP…

Acho um pouco de arrogancia a comunidade Java achar que “a maioria dos bons profissionais está no Java”. O Marcos falou, mas já vi esse tipo de frase ser repetida no GUJ. Bons profissionais estão em todas as linguagens. Maus também. Não existe nenhuma pesquisa que quantifique quantos são bons em cada plataforma. A mesma frase costuma a ser repetida em outras comunidades, como a do C++. Por lá, já existe a visão de que “como a linguagem é fácil, o profissional é ruim” e nós aqui sabemos que isso está longe de ser verdade. Fazer um bom software em C# também exige que o sujeito tenha um profundo conhecimento da API, dos componentes e saiba quais são as boas práticas da linguagem. E isso, editor visual nenhum ensina, só muito estudo.

Ser bom ou mau profissional é mais um aspecto pessoal, do que relacionado a tecnologia. É um indivíduo sentar a bunda na cadeira e estudar. É vivência, experiência e vontade de crescer. É a pessoa estar preocupada em fazer software de qualidade. E isso não é fácil em linguagem nenhuma.

Bom, Vini. Entre os desenvolvedores .NET que vejo no mercado e nos fórums, você está mais pra excessão do que pra regra. Talvez por ser fácil desenvolver RAD no Visual Studio, muitos programadores iniciantes tendem a ir pra ele. Além disso, existe mercado pra gente que só sabe mexer numa ferramenta e arrastar botões.

Aplicativos simples a pessoa não precisa ter conhecimentos avançados de programação e nunca vi isso com ruim, embora muita gente veja.

De qualquer forma, respeito sua opinião.

Nós fóruns eu conheci ótimos desenvolvedores como Alexandre Chofi, Janynne Gomes, Elemarjr e o Thiago Pastor.
E revi alguns caras que já estiveram no GUJ, como o Louds e o André Brito… E, assim como no GUJ, efetivamente há bem mais iniciantes do que veteranos.

Então, ainda não vejo onde isso seja diferente daqui.

Acho que a única diferença, talvez, seja que o Marketing da MS deixa o pessoal por lá bem mais empolgado… e que as tecnologias vem basicamente desse fabricante.
No caso da comunidade Java, o pessoal sai fazendo “MVC” por que é moda, mesmo que o jeito que implementem esteja completamente errado… (só para vc ter uma idéia, até esses dias, num dos tópicos, descobrimos que vários membros achavam que lógica de negócios ficava no controller, e não no model). Há cada código aqui que beira a aberração, portanto, acho que júniores são júniores em qualquer lugar, e qualquer linguagem. Existe também um grande número de frameworks, e os júniores costumam a sobrecarregar sistemas com camadas e mais camadas de coisas que eles leram que é legal, mas que não sabem direito nem pq estão usando.

Lá, pelo menos, as camadas são de um fabricante só. xD Aqui, sopa de letrinhas é tão grande que até nós veteranos as vezes nos perdemos. heheheheh

Veja, não estou dizendo que lá é melhor que aqui, nem vice-versa. Só acho que profissionalismo não tem a ver com a linguagem que o sujeito escolhe, mas com aspectos individuais.
Assim como fazer um sistema direito. RAD não resolve vida de ninguém, e qualquer um que já usou uma vez sabe que fazer sistema direito exige bem mais do que isso.
O cara vai descobrir isso seja se ferrando no WebForms, no Matisse, ou mesmo no GameMaker, hehehe.

[quote=marcosalex]Bom, Vini. Entre os desenvolvedores .NET que vejo no mercado e nos fórums, você está mais pra excessão do que pra regra. Talvez por ser fácil desenvolver RAD no Visual Studio, muitos programadores iniciantes tendem a ir pra ele. Além disso, existe mercado pra gente que só sabe mexer numa ferramenta e arrastar botões.

Aplicativos simples a pessoa não precisa ter conhecimentos avançados de programação e nunca vi isso com ruim, embora muita gente veja.

De qualquer forma, respeito sua opinião.[/quote]

  • o que seria algo complexo em um software corporativo que a maioria dos programadores .NET não conseguem fazer, mais os programadores java conseguem ?