Dez razões para adotar o C#! Que piada!

:twisted:

Rafael e pessoal deste DL:

Primeiramente nem sei como cheguei neste site, neste post… Acho que eu estava procurando algo consistente sobre
Java x .NET e me deparei com este “sei lá o que”…

Infelizmente o autor do artigo sobre .NET é muito fraquinho… Pq vc não lê artigos de verdade sobre .NET (msdn.microsoft.com), ou é demais para vc?

De qq forma seus comentários se igualam ao artigo… É uma porcaria sem fundamentos de quem não tem base nenhuma de .NET…
Daonde vc tirou as respostas de algum índice do .NET for Dummies?

Afirmacao 1: C#:C++ Forte herança do C++
Isso eh motivo real para alguem adotar C#? ter influencias do C++? logico que, por estar mais familiarizado com a sintaxe, o processo de transicao de uma para a outra eh menos traumatico. Mas ate ai, Java tambem herda muito do C++.

Isto não é motivo pra nada nem mesmo para adoção de Java

Afirmacao 2: Completamente baseado em objetos.
Java eh mais orientado a objetos ainda do que C#. Nao ha discussao sobre isso, e a sintaxa do Java eh muito mais limpa tambem. Em C#, voce precisa explicitamente dizer que um metodo pode sobrer override ( atraves da palavra-chave “virtual” ) e deve explicitamente informar que voce quer fazer override ( usando a palavra-chave “override” ).
Isso soh complica as coisas.

Bom, quem complicou foi você. Semanticamente falando C# é mais forte que Java! O uso de virtual/override/new tem um papel fundamental na construção de uma hierárquia de classes. O Java gera classes base frágeis, que se forem alteradas podem desestruturar a hierarquia das classes que derivam delas!

Afirmacao 3: Acesso à floresta de classes do Framework.NET.
E… ? o C# eh apenas uma linguagem, logo ele teria que ter acesso a algum tipo de framework. Ja o Java eh tudo uma coisa soh. A tecnologia Java.

O problema do Java é que ele é intrinsico a ele mesmo… O poder do acesso das bibliotecas do .NET Framework são estendidos para qualquer outra linguagem da plataforma, isto inclue COBOL.NET, Perl, Eiffel e outras. Álias as classes de XML do Java nem se comparam a System.Xml, isto só pra começar… nem vou falar de Code Access Security, Remoting e Windows Forms

Afirmacao 4: Desenvolvimento orientado a componente.
Se voce leu o artigo, esta na cara que esta afirmacao eh soh para encher linguica. Heranca, reutilizacao de codigo… isso tudo eh proveniente da Orientacao a Objetos. Nao precisa ficar inventando nomes soh para ocupar espaco.

Orientação à Componentes é uma coisa que o C# é e o Java não é. Propriedades e eventos são First-Class citizen da linguagem (não existe get, set), versionamento de classes, metadados customizados (Atributos), entre outras… Não vou perder meu tempo te explicando um novo paradigma então comece por aqui (http://www.gotdotnet.com/team/csharp/conferences/OOPSLA%202002%20CSharp.ppt) e com o tempo vai procurando coisas novas

Afirmacao 5: Comentários em XML
E o Java tem o JavaDoc, formato utilizado como padrao de documentacao para varios tipos de documentos tecnicos, nao somente Java. A Micro$oft ta com uma mania de enviar XML em tudo quanto eh canto…

Javadoc padrãO ? Imagino que não seja mais “padrão” do que XML da W3C

Afirmacao 6: Linguagem baseada em padrões internacionais.
O Java tem o pessoal do JCP ( Java Community Process ), que garante a padronizacao e qualidade. .NET tem o apoio da MS. Soh. Java tem apoio de umas empresinhas, como Oracle, IBM, Nokia, a propria Sun, BEA ( so para citar uns pouquissimos nomes ).

O padrão do Java é JCP, ora quem é a dona disto tudo é a Sun… O .NET CLI (Common Language Infrastructure) são padronizadas pelo ECMA e está sendo aceito pela ISO…

Afirmacao 7: Interatividade com XML Web Services.
Java suporta Web Services a mais tempo que o .NET

COM aceita Web Services a MUITO mais tempo que Java. .NET é a evolução do COM. Don Box, o pai do SOAP, é arquiteto do time de Web Services do .NET Framework… Sua próxima task são as adequações dos padrões da WS-I (WS-Security, WS-Transaction, WS-Profile, entre outras). Aonde está a Sun? Ela não faz parte do WS-I… e muito menos tem soluções de Web Services como Microsoft e IBM

Afirmacao 8: Plataforma alvo: Todas.
Ah, maravilha. Um mundo globalizado e unico… que o Java faz acontecer a mais de 6 anos, comprovadamente. Agora, tentem rodar um aplicativo feito em C# num Linux.
Teoricamente .NET pode sim rodar em varias plataformas, mas oficialmente soh saiu um release beta do framework para FreeBSD ( que, vale dizer, nao eh gratis ), e o pessoal do projeto MONO ( http://www.go-mono.com ) esta engatinhando ainda, e por conta propria. Quem garante que rodara em um lugar nao-windows? A Micro$oft eh que nao.

Plataforma .NET por ser nova roda em toda família de SOs da MS (com exceção do Win95, NT 3.21, CE 3)… A CLI roda no MacOS X, FreeBSD e são simplesmente para provar a portabilidade e não para comercialização… Outras iniciativas como o Mono (Linux), Intel (Unix), HP (Unix) estão caminhando… Veja por outro lado… ao invés da MS fazer CLRs meia-boca para todas as plataformas assim como a Sun faz (vide o problema da JVM com Solaris), ela forneceu as specs para que outros fornecedores implementem a CLI para suas plataformas… Ao invés de ficar atacando a MS, somente, pq vc não questiona outras empresas de SO tais como IBM (Aix), QNX (QNX OS), Palm (Palm OS), Apple (Mac OS X), … para implementarem… Ou vc prefere JVMs escritas por um único fornecedor (mesmo levando em conta que outros fornecedores fazem JVM… Que alias a JVM da MS foi premiada várias vezes pela Sun…)

Afirmacao 9: Gerenciamento de memória “Estilo C”.
E isso vem a ser uma vantagem? permitir acesso direto a ponteiros? certo, programando bem da para fazer algumas coisas interessantes, mas voce, programador, fica responsavel pelos seus atos.

Programador fica responsável pelos seus atos sempre! Ou afinal vc é mais um lobbista do que um desenvolvedor… O C# usa unsafe em 2 níveis (na instrução e na compilação) para utilização de ponteiros e isto não é mais perigoso do que fazer cagadas com JNI…

Afirmacao 10: Ferramenta RAD: Visual Studio.NET
O VisualStudio.NET eh uma ferramenta que deixa MUITO a deseja. Extremamente limitado em questoes de customizacao, nao eh free e tira muito da liberdade na hora em que for necessario um contato mais fundo com a linguagem.
Ha coisas boas, como fornecer uma maneira facil e rapida de configurar datasets, conexoes com o banco e desenho de interface grafica, mas no geral eh muita propaganda para pouco produto.
Eclipse bate vs.net facil

Bom esta eu nem vou me dar o luxo de responder ! Aqui prova que vc nunca usou o VS.NET… Customização é o que mais existe… Vc pode conhecer Java… Mas não conhece nada de .NET e VS.NET… Aliás vc deveria se fechar quando o assunto for .NET… Pois o fato de vc não saber nada sobre .NET (o que foi concluído), gera estas respostas sem fundamentos…

Conclusao: o artigo da iMasters eh PESSIMO. Com afirmacoes sem base solida alguma, soh ajuda a provar que Java domina !!

Realmente o artigo é péssimo! Se vc quiser consistência… Antes de vc e seus colegas de DL me sairem me xingando… seria bom ler um artigo com base para comparações… (http://genamics.com/developer/csharp_comparative.htm)

Os outros post são tão fracos qto o seu, então não vou perder mais meu tempo com vcs…
Moral da história… Continuem programando com Java… Pois .NET é demais pra cabeça limita de vcs…

A propósito vc é o “fodão” deste grupo, já pensou em procurar um “fodão” de .NET para discutir… Tem um monte de neguinho que te daria um banho de .NET (www.msdnbrasil.com.br/foruns)

Inclusive é muito interessante o GUJ ser feito em PHP… Onde estão os JSPs e Servlet… Casa de Ferreiro, Espeto de Pau :lol:

(new System.Threading.Thread(new System.Threading.ThreadStart(TFunc))).Abort(); :roll:

Legal que voce tenha vindo ao GUJ, sempre eh bom ouvir a opinao de alguem realmente entendido e imparcial!! Ha algumas noticias sobre Java x .NET na parte de noticias do site, se nao me engano… talvez lhe ajude em sua jornada.

Assim como voce, todo mundo aqui defente algo em que acredita, e isso eh um assunto que nunca ira acabar, pois todos tem suas preferencias e pontos de vista. Eu faco comentarios insanos, assim como certas pessoa tambem fazem. Eu realmente ja usei o VS.NET e nao gosto, assim como nao gosto de muitos editores para Java.

Eu sei que em listas de .NET todo mundo mete o pau em Java, na lista de Oracle eles mete o pau no DB2, e nos metemos pau no .NET… o que seria do mundo sem competicao? uma monoticia e mesmice.

Rafael

Rafael…

Legal vc ter respondido de uma forma política! Visto que discutir .NET comigo seria perda de tempo (foi inteligente e mais seguro da sua parte)… Bom acho que vc não uso o VS.NET/.NET suficientemente… e vc tem o direito de não gostar… agora falar mal, é outra coisa… Pois só pode falar mal quem pode (e conhece) e não quem quer! 8)

Com relação as listas MS, se vc entrar lá vai ver que o pessoal que começa com este papos furados de comparação vai logo sendo cortado… Aliás acreditar que nas DLs da MS fica rolando este tipo de coisas é mais uma lenda… :shock:

Eu não serei usuário desta DL, muito menos venho pegar informações aqui, parece uma piada (como achei vcs q nem fazia idéia que existia com o Google :? ) … Sinceramente quiz analizar o impacto do meu post!

I’m Insane Very Much!!! The Perfect ByteCode = 100101011000011110110110000111001010100111110101110001111010111110011 :wink:

Caro especialista.
1-) O nosso site eh em java e servlets, forum eh phpbb. Ao contrario da comunidade Microsoft, a nossa nao recebe dumping. Infelizmente. Alias, quem escreveu o msdn foruns, o Thiago Silva, trabalha com o Rafael e acha java muito legal, interessante nao?

2-) http://java.sun.com/people/jag/green/OakSpec0.2.ps
Oak, eh a linguagem que seria o java. Ai retiraram muita coisa que acharam podre no Oak e fizeram o java. Se voce der uma olhada, eh PARECIDISSIMA com c#. Engracado nao?

3-) O seu comentario sobre propriedades, falando que nao existem get e set, como se fosse uma vantagem, eh uma COMEDIA. Voce nao programa faz tempo, nao eh verdade?

que codigo voce acha mais legivel:

objeto.variavel = 5;
objeto.setVariavel(5);

Poxa. Com certeza eh o 1o. Eu concordo. Agora olha o que pode acontecer:

objeto.variavel = 5;
imprima(objeto.variavel);
objeto.setVariavel(5);
imprima(objeto.getVariavel());

No 2o caso, que eh o java, voce sabe que talvez o metodo setter possa ter lancado uma excessao. No caso 1, isso NUNCA fica explicito. Uma linha inofensiva como aquela, sem mesmo voce saber (MUITO MENOS O vs.net te avisar) pode dar uma excecao, pode ser que o valor final nem seja 5, pode ser que a propriedade NEM MESMO mude o valor.

Isso porque? Porque o carinha que inventou o Delphi, o bobo do Anders, adora property. Ninguem gosta, NINGUEM, porque perde “streamline” do codigo, nao eh legivel o que esta acontecendo. Mas voce acha uma vantagem, porque delphi e c# tem. Fala serio!

Ah pessoal! Para quem nao sabe, em c# voce nao precisa pegar NENHUMA exception. E sabe como voce faz para saber se um metodo lanca tal exception… hum… NAO FAZ. huauhahuau. Voce fica dependendo da documentacao que a pessoa fizer no tao lindo XMLDOC da microsoft.

Um dia a MS vai perceber que XML foi feito para ser tambem human readable, e nao human writable.

Poucas coisas que eu acho legal no c#: intern e attributes. Vai ter metadado no java tambem, junto com generics, que a MS soh tem um panfletinho falando que um dia vai existir.

Quando voce perceber que Property eh terrivel, da um toque pra gente. Basta um pouco mais de experiencia que voce chega la.

Outra otima parte do seu post: que o .NET traz com atributos um novo PARADIGMA. Verdade, OO eh um novo paradigma para a microsoft. Bem vindo! O dia que tiver uma implementacao orientada a aspecto para o .net voce avisa a gente beleza?

analiZe muito bem o impacto do seu post.

Caro especialista.

Paulo

1-) O nosso site eh em java e servlets, forum eh phpbb. Ao contrario da comunidade Micro$oft, a nossa nao recebe dumping. Infelizmente. Alias, quem escreveu o msdn foruns, o Thiago Silva, trabalha com o Rafael e acha java muito legal, interessante nao?

Bem… O MSDN Forum é exatamente o tipo de aplicação que não deve ser escrita em da forma que foi em nenhuma plataforma…

2-) http://java.sun.com/people/jag/green/OakSpec0.2.ps
Oak, eh a linguagem que seria o java. Ai retiraram muita coisa que acharam podre no Oak e fizeram o java. Se voce der uma olhada, eh PARECIDISSIMA com c#. Engracado nao?

Não creio q a MS se baseou no OAK para fazer o C# … Se vc ler artigos de verdade, como este www.dnjonline.com/articles/essentials/iss24_essentials.html vai perceber que as origens vieram de um cara chamado OmniVM!

3-) O seu comentario sobre propriedades, falando que nao existem get e set, como se fosse uma vantagem, eh uma COMEDIA. Voce nao programa faz tempo, nao eh verdade?

Bom agora são 12:00 pm e eu estou programando…

que codigo voce acha mais legivel:

Código:

objeto.variavel = 5;

tranquilamente este código é mais legivel…

Código:

objeto.setVariavel(5);

Poxa. Com certeza eh o 1o. Eu concordo. Agora olha o que pode acontecer:

Código:

objeto.variavel = 5;
imprima(objeto.variavel);

objeto.variavel = 5;
imprima(objeto.variavel); //suportado por C#
// imprima(ref objeto.variavel); // isto é ilegal em C#, vc não tem storage aqui
obj = objeto.variavel;
imprima(ref obj);
//não gostou ? tente:
imprima( ref obj = objeto.variavel );

Código:

objeto.setVariavel(5);
imprima(objeto.getVariavel());

A pergunta é o que é mais rápido acessar 1 váriavel ou executar um função (que tem indirecionamento)?
uma variável é claro… Então este “syntatic sugar” traz valor pro código produzido!

No 2o caso, que eh o java, voce sabe que talvez o metodo setter possa ter lancado uma excessao. No caso 1, isso NUNCA fica explicito. Uma linha inofensiva como aquela, sem mesmo voce saber (MUITO MENOS O vs.net te avisar) pode dar uma excecao, pode ser que o valor final nem seja 5, pode ser que a propriedade NEM MESMO mude o valor.

No 2o caso que pode ser qq linguagem q eu conheça que aceita métodos (inclusive o C#) pode ocorrer exceção (com ç) assim como no primeiro caso (a exceção pode ser disparado até mesmo por propriedades em qq circunstancias)… Acho que vc precisa ler o C# for Dummies para subir 1 nível!

Isso porque? Porque o carinha que inventou o Delphi, o bobo do Anders, adora property. Ninguem gosta, NINGUEM, porque perde “streamline” do codigo, nao eh legivel o que esta acontecendo. Mas voce acha uma vantagem, porque delphi e c# tem. Fala serio!

// (Sem comentários se seu “parser” não entendeu!

Ah pessoal! Para quem nao sabe, em c# voce nao precisa pegar NENHUMA exception. E sabe como voce faz para saber se um metodo lanca tal exception… hum… NAO FAZ. huauhahuau. Voce fica dependendo da documentacao que a pessoa fizer no tao lindo XMLDOC da Micro$oft.

A velha história das checked exceptions… existem um monte de prós e contras…
Sabe como eu chamo isto que vc quer dizer… Negligência do programador em não documentar corretamente!
Sabe como um cara esperto em .NET (que não é o seu caso) faz para descobrir que exceção (se não documentada) é disparada pelo método, olha diretamente na IL com o ILDASM!

Um dia a MS vai perceber que XML foi feito para ser tambem human readable, e nao human writable.

Vc acha que o VS.NET não faz isto… Sorry !

Poucas coisas que eu acho legal no c#: intern e attributes. Vai ter metadado no java tambem, junto com generics, que a MS soh tem um panfletinho falando que um dia vai existir.

Pelo menos acha alguma coisa… Com relação aos generics compare primeiro antes de falar … a versão Java não passa de macro substituição!!! A versão de generics da MS está intrinsica na CLR o que garanti otimização através do JIT… http://research.microsoft.com/~dsyme/papers/generics_abs.htm

Quando voce perceber que Property eh terrivel, da um toque pra gente. Basta um pouco mais de experiencia que voce chega la.

Se vc trabalhasse comigo com certeza eu ia torcer vc todo os dias! Nem vou perder meu tempo discutindo da minha “experi” com vc… Pois to vendo que é muito comico! Daria bem para atuar no circo…

Está será minha última mensagem sobre este tema… Podem detonar depois!!!

Sabe porque o generics no java eh resolvido em tempo de compilacao? Para BACKWARD COMPATIBILITY. Algo DESCONHECIDO pelo .net.

Quando generics entrar no c#, sabe o que o pessoal vai rpecisar fazer? Exatamente! Service Pack de MEGAS em todos os clientes! ServicePack neles!

Outra coisa, MINHA NOSSA SENHORA. Peguem esse arquivo que ele passou no link (troque $ por S :)) Vejam a BIBLIOGRAFIA do generics pro C#, existem MAIS DE 5 referencias a papers do java.

se não fossem os erros de português nos comentários, eu chutaria que o nosso caro NotYet Specialist é o nosso colega Mauro Sant’anna, MSDN Regional Director. Mas não vamos discutir isso, vamos ao que interessa de fato:

[quote]Pelo menos acha alguma coisa… Com relação aos generics compare primeiro antes de falar … a versão Java não passa de macro substituição!!! A versão de generics da MS está intrinsica na CLR o que garanti otimização através do JIT… http://research.Micro$oft.com/~dsyme/papers/generics_abs.htm (NotYet Specialist)[/quote].

  1. Backward compatibility. Enquanto Java2 se chamar Java2, todo e qualquer programa escrito para plataforma VAI ESTAR dentro da filosofia “write once, run anywhere”. Quando a tecnologia avançar para a versão 3, aí a história vai ser outra. Porém, como é muito bem sabido, a transição da versão 1.0 para a versão 1.1 do .NET Framework forçou que alguns (vários) projetos tivessem que ser recompilados para trabalhar adequadamente sobre o CLR antigo (http://www.3leaf.com/default/articles/ea/SBS.aspx). Você não acha isso impressionante? (nota: isso é uma pergunta retórica, se você não entendeu…)

1,5. só dois comentários: primeiramente, a educação e a ética profissional mandam lembranças, viu? Em segundo lugar, que tecnologia usaram para que tal aplicativo merecesse tal crítica? raw ASP?

  1. Antes de tudo, é verdade que a Microsoft soltou uma versão para o .NET Framework 1.0 para FreeBSD. Esta implementação se chama Rotor e está em algum lugar do site da MS para ser baixado. Agora, vamos à realidade das implementações .NET para SOs não-windows. Para começar, o licenciamento do rotor diz basicamente o seguinte (ou seja, isso é uma síntese): aplicações usando o .NET Framework e que tenham sido escritas e compiladas na plataforma Windows não poderão ser usadas para fins que não acadêmicos em implementações deste Framework para outras plataformas de sistema operacional. O uso da versão do .NET Framework para FreeBSD se destina unicamente para finalidades acadêmicas. Outstanding, don’t you think so? :twisted:
    Enfim, o .NET Framework rodando no FreeBSD (se alguém tiver um FreeBSD por aí, recomendo que façam um teste, é muito engraçado) é um desastre. Peguei uma aplicação WindowsForms já pronta, construída no VS.NET e a coloquei para rodar em ambiente gráfico (óbvio! mas só para constar, o ambiente gráfico usado foi o Blackbox). Resultado: uma grande decepção, já que os componentes do form saíram todos mal dimensionados (ok, pode ser problema no blackbox) e vários eventos programados ou não eram executados ou lançavam aquele diálogo de exceção. Ainda não testei no OSX, mas já que existe tal versão do framework, vou testá-la. Mas, antes, só uma pergunta: se .NET é portável, por que um projeto não consegue rodar efetivamente em outra plataforma diferente daquela onde ele foi compilado?
    Outro ponto importante a ser levantado: quando se fala de .NET, costuma-se englobar as linguagens-padrão (VB.NET, C#.NET, C++.NET, J#.NET), as APIs (System.XML, Windows.Forms, …), as tecnologias associadas (ASP.NET, SmartClients, WebControllers, etc…) e o CLR. Ignorando o fato de não ter conseguido rodar corretamente um projeto WindowsForms no FreeBSD, como eu faria para rodar meu projeto ASP.NET sobre o Rotor sendo que ele é altamente acoplado ao IIS (que por sua vez só funciona em ambientes Windows) :? ?
    Mudando um pouco de alvo, tocou-se no ponto das JVMs. A comunidade Java já está careca de saber, mas para quem é de fora é bom explicar: toda a tecnologia Java (incluindo aí JVM, JRE, J2EE, J2ME, JDO, …) é pura especificação, criada pela JCP. JCP (Java Community Process) é uma entidade INDEPENDENTE, sem FINS LUCRATIVOS e FUNDADA pela Sun Microsystems para poder regular e especificar tudo que for referente a esta plataforma. Esta comunidade é formada por empresas do calibre de Hewlett Packard, IBM, Oracle, Borland, Fujitsu, Siemens, General Eletric, Nokia, Motorola, Sony, Ericsson, Phillips, Accenture e por aí vai; no seu início, até a Microsoft fazia parte da JCP e ela foi a responsável pela criação das melhores VMs para Windows enquanto esteve lá (isso é outra história). Porém, não existe só VMs feitas pela Sun. A Sun é responsável pela criação das VMs mais populares. Ela cria VMs para win32 e win64, SolarisOE e linux32/64 (aliás, tal VM é resultado do trabalho entre JCP e comunidade Open-Source - Blackdown). Mas se você achar que as VMs da Sun são muito “meia-boca”, você pode instalar a implementação da BEA (JRockit), da Oracle (Aurora), da IBM… Você pode até mesmo fazer uma fusão de VMs, ou seja, usar a VM da Sun junto com o JITer da BEA, ao invés do Hotspot. Com todas estas características, dizer que o trabalho da JCP (e não da Sun) é tão ad-hoc como foi citado só demonstra 3 coisas: imparcialidade, falta de visão estratégica e de conhecimento básico sobre a plataforma Java. (p.s.: pergunte-se o porquê o pessoal do projeto Mono até hoje não ter uma versão estável para a API Windows.Forms. E pergunte-se também o porquê da necessidade de emulação por Wine http://www.go-mono.com/winforms.html).

pausa para tomar água…

  1. JNI… andou fazendo lição de casa, hein? Pois bem, JNI é a ponte entre Java e o mundo das bibliotecas nativas. Normalmente JNI é usado para que uma certa aplicação Java acesse funções implementadas nestas bibliotecas nativas que vai prover ao aplicativo acesso direto a recursos de hardware, como uma impressora. Se não estiver enganado (sorry, nunca precisei implementar nada que precisasse de recursos nativos da plataforma), as únicas coisas que o programador Java é obrigado a fazer são criar uma interface em C (blabla.h) para o driver da impressora (possibilitando, assim, que o objeto Java acesse os métodos/funções do driver) e “registrar os nativos” na classe que vai acessar o driver. Ponto final. O programador não vai brincar com os “unsafe types”. Se houver algum erro devido a estes tipos, vai ser erro na implementação do driver, o que, convenhamos, é um pouco difícil de ocorrer.
    Mas se isso não convencer que JNI é menos “error-prone” do que usar “unsafe types”, pode-se explorar um modelo um pouco mais complexo, mas mais escalável que é a arquitetura CORBA (que, se não me falha a memória, não é suportada pela plataforma .NET).
  1. Para a primeira parte, só duas palavras: AspectJ e Jython.
    Sobre linguagens interpretadas (com Perl, Ruby e Python), que tal: http://www.freeroller.net/page/ceperez/20021205#net_clr_unsuitable_for_interpretive
    Sobre XML, JDOM (open-source) faz as mesmas coisas que as classes do System.XML fazem. Então, tanto faz um quanto outro.
    Sobre Code Access Security: se puder explicar, agradeço.
    Sobre Windows.Forms, eu nem vou citar Swing, que é de fato portável. Vou falar de SWT, um novo conjunto de componentes para construção de “forms” que alia a portabilidade do Java com a agilidade de renderização que componentes GUI nativos possuem. Ahhh!! E qual é a outra API para desktop GUIs no .NET?
  1. <sarcasmo>De fato, HTML deixou de ser um padrão W3C e virou um padrão Microsoft. Tim Berners-Lee deve estar muito triste.</sarcasmo> Ironias à parte, documentação é algo para ser visto e navegado, e não manipulado. Então, para quê documentação em XML? Ok, pode-se considerar que, uma vez em XML eu poderia gerar, usando XML Stylesheet Transformation Language (XSTL), documentos em PDF, PS, Word, HTML… Mas qual costumava ser o sinômimo para HIPERTEXTO (e não documento) portável?
  1. Se isso é realmente importante para você, considere que o Hotmail rodava CGIs sobre FreeBSDs até pouco tempo atrás (http://www.securityoffice.net/mssecrets/hotmail.html). E considere também que o site da filial da MS no Reino Unido (se não estou enganado) rodava sobre um belo IBM Websphere 3 (camulflando as extensões .jsp para .asp).
  1. Sinceramente: nós, da comunidade Java, já estamos de saco cheio destes comparativos com fins explicitamente publicitários feitos por MSDN-RDs, “Microsoft Certified qualquer coisa”'s. No final de tudo, sabemos que Java é melhor por zilhões de coisas que os programadores .NET nem sabem que existe. Quer persistência transparente sobre qualquer tipo de fonte de dados? Tome JDO, Hibernate, OJB. Quer framework para testes? JUnit, HttpUnit. Cansou-se de OOP? Que tal AOP, usando AspectJ ou AspectWerk? Protocolo para comunicação p2p? JXTA! Componentes distribuídos como serviço? Jini. Um protocolo RPC-style? Java RMI. Automatização de tarefas? Ant!! Droga, odeio esta IDE… Mude para JBuilder, Eclipse, Forte, Netbeans, IDEAJ, Together, Rational XDE, WSAD, JDeveloper … Qual banco de dados usar para alcançar máxima performance? MySQL, PostgreSQL, Firebird (estes gratuitos), Oracle9i, SQLServer 2000, IBM DB2, Sybase, Ingres, isto é, qualquer um … Ahhh banco de dados é coisa do passado? Prevayler!!! Utilidades para protolocos de rede? Jakarta Commons!! Reconhecimento de voz? JavaSpeech. Multimedia? JavaMedia Framework. Infra-estrutura para telecom? JAIN. Não gostei da linguagem Java, mas acho a API muito rica e gostaria de usá-la: Jython.org!! Frameworks para aplicações para web usando padrão arquitetural MVC? Struts, E-gene, Tapestry. Portlets? Jetspeed, Oracle PDK. Tem “ASP.NET” para Java? JavaServer Faces!!! E framework para agentes? Aglets… E para IA ou sistemas especialistas? JGAP, Joone, Jess. Relatórios? Jasper Reports, JFreeReport. Logging? java.util.logging, Log4J. E SmartClients para Java? Sim, JavaWeb Start.
    Alguma coisa mais?

ahh sim, a última citação:

  1. O que mostra o nível dos frequentadores de cada lista. Aqui nós não somos vaquinhas de presépio de nenhuma grande empresa. Além do mais, todos aqui gostam de discutir tecnologia (seja ela qual for); assim, sempre que surge mais um panfleto sobre as “inumeráveis e substanciais” vantagens do .NET/C# sobre Java gostamos de expor nossa sincera opinião (i.e. fazer piadas!!). E, embora você vá discordar, criticamos muito a tecnologia Java quando necessário (ver tópicos http://www.guj.com.br/forum/viewtopic.php?t=2320 e http://www.guj.com.br/forum/viewtopic.php?t=2339). E tudo isso só mostra uma coisa: o alto nível de maturidade e qualidade de nossa comunidade.

Para terminar, alguns links interessantes:
mito da portabilidade do .NET: http://www.neward.net/ted/weblog/index.jsp?date=20030130#1043955918414
JVM vs. CLR: http://www.freeroller.net/page/ceperez/20021209#net_clr_slower_than_most
RegExp benchmark: http://www.freeroller.net/page/ceperez/20030210#p_i_found_a_a

eh importante notar uma coisa:

  1. erros de portugues em um artigo ou algo do genero eh algo CRITICO.
  2. erros de portugues em um forum onde as pessoas estao tendo uma discussao (ou uma retorica dependendo da pessoa) eh normal. por exemplo, meu teclado nao tem acento normal nem tio, por isso nao espere o melhor portugues com os acentos
  3. ser imparcial na disputa .net x java eh algo que poucos conseguem, e nao eh necessario conhecer os dois pra isso, portanto mesmo sem ter lido “.net pra antas” (versao do reino animal) posso fazer perguntas sobre a tecnologia pra comparar com o java, nao posso?

nao vou entrar na discussao dos 10 pontos do artigo nem mesmo nos pontos que continuaram sendo discutidos no topico, como o proprio especialista em .net falou, ele nao ira mais responder, duvido muito que vai ler…

por ultimo, pra TODOS, se as discussao sobre a tecnologia cai pro lado pessoal, resolva em pvt… lavacao de roupa suja tem lugar

Maluco!!! (pra usar uma expressão carioca)

Nunca tinha visto uma discussão assim… aplaudo o Daniel Quirino pela brilhante memória pra lembrar os vários nomes de todas as tecnologias Java que existem por aí…

Sobre ética, posso dizer que baixou um pouquinho do aceitável, mas a taxa de frases aéticas ainda está boa, pelo tanto de coisas escritas…

Sobre o que se deve ou não dizer sobre o C#, eu acho que a gente tá bem. Se todo mundo metesse o pau em tudo o que acha ruim e contrário ao prograsso humano, as coisas estariam bem melhor.

Cada dia eu fico mais fã do Theo da Raadt, do Open BSD, e seu mote: “se o meu bom programa prejudica o bom funcionamento do seu programa, se vira”!

O filtro anti-spam que ele colocou no Open usa aquelas listas negras de IPs de spammers, o que é um critério bastante discutível. Só que o filtro interage com o firewall pra deixar a conexão com essas máquinas propositalmente lenta, atrasar ou errar pacotes, enfim, infernizar.

  • Ah, mas meu IP é variável, não fui eu que fiz o spam!
  • Meu programa é ótimo, se vira! Pressione o seu provedor pra ele descobrir o spammer e depois retirar seu ip da black list. Ou reconecte e acomode-se.

Quando eu falo de .NET, eu não tenho a menor idéia do que eu estou falando. Isso não me impede de criticar um artigo horrível. Se vira, pressiona o site pra melhorar a qualidade dos seus escritores e editores. Ética não é escapatória para deixar as pessoas falarem merda impunes.

Agora, eu acho incrível que o nosso NotYet Specialist tenha feito avatar e tudo… heehehehe!!!

[]s

esse tal de prograsso eh que me mata ehhehe :slight_smile:

tambem acho, por isso mesmo que apoiei tua ideia sobre o escritor do artigo/editor do site quanto a gramatica la. Mas soh nao falei do .net pq do jeito que esta o topico nao vai levar a mais nenhum lugar esclarecedor… se quiser tem que comecar um novo com animos acalmados

esclarecimentos:

  • sei que peguei pesado, por isso, desculpem-me;
  • sei que fui muito rigoroso no que se trata de português, mas prefiro maltratar o menos possível a nossa língua. Mas também não humilho ou desprezo (embora o que tenha escrito diga o contrário) alguém por escrever errado ou usar abreviaturas do tipo “vc” “eh”, etc (mesmo porque as uso com muita freqüência em IM);
  • concordo que para se discutir “Java vs. .NET” deve-se, primeiro finalizar este tópico e depois ter certeza de que coisas cosmésticas não vão ser discutidas, como por exemplo a discussão do “objeto.prop = 1; ou objeto.setProp(1);?”;
  • minha memória não é tão boa assim :wink: ;
  • sobre ética, acho que todo mundo fala mal do projeto de alguém quando ele não nos agrada. Mas dizer isso publicamente, principalmente quando o nome do autor do projeto já tinha sido divulgado, é, pelo menos, uma falta de educação e respeito com o autor. Vale sempre ressaltar que, um dia, todo nós já escrevemos códigos ruins e se nós melhoramos, foi porque várias pessoas nos ajudaram.

that’s all folks…

p.s.: [quote]Aonde está a Sun? Ela não faz parte do WS-I… (DotNet Specialist)[/quote]
faltou dizer ao DotNet Specialist que a Sun faz parte da WS-I. Para não restar dúvidas, cá está: http://www.ws-i.org/Community.aspx?Alpha=S

Nunca pensei que esse post sobre o artigo que eu coloquei aki que fala do C# fosse dar tanto o que falar.
Os animos por aki ficaram bem exaltados, tá uma troca de farpas!!!
E Daniel, acho que vc mandou muitissimo bem, acho que vc não deve pedir desculpas, da maneira que o NotYet Specialist tratou (de forma deselegante e grosseira) nosso amigo Rafael dizendo pra procurar se informar mais sobre o .Net e ir conversar com um expert como ele se alto intitulou, vc tambem mostrou pra ele que ele também precisa se informar mais a respeito do JAVA(e também sobre .Net) pra poder falar a respeito e critica-lá, vc sim mostrou que tem embasamento e conteúdo pra poder abrir esse tipo de discussão.
Vc simplesmente colocou ele no seu devido lugar.
E como nosso amigo Dukejeffrie disse: QUE MEMÓRIA HEIN!!!
Nunca na vida que eu ia saber ou lembrar de todas as tecnologias que vc postou aki!!!

obrigado Luiz e Dukejeffrie… :slight_smile:
se quiserem ver a continuação deste debate, eu e o Fábio Galuppo (DotNet Specialist) estamos dando prosseguimento a ele, mas mantendo o alto nível que nós, programadores profissionais, devemos ter. Eis as urls:
.NET vs. Java: http://www.msdnbrasil.com.br/forum/ShowPost.aspx?PostID=1080&PageIndex=2.
Portabilidade: http://www.msdnbrasil.com.br/forum/ShowPost.aspx?PostID=6210

Até…

Galera eu li o tópico inteiro e agradeço a cada um pela excelente contribuição no meu aprendizado, inclusive o kra que escreveu o artigo que originou esta batalha (vencida pelo java ao meu ver), desenvolvia em vb6 e comecei a migração pro vb .net, mas como era tudo diferente, eu pensei: Já que terei que aprender uma nova linguagem, agora aprenderei uma de gente grande, por isso iniciei os estudos em Java, tô apanhando muito é verdade, mas pelo pouquissímo que aprendi sobre java, puder ver que ele é infinitamente melhor que o resto do mundo; e agora meu objetivo é em breve fazer parte desta equipe de desenvolvedores excelentes que compõem o mundo java e o GUJ, e espero que vcs possam me ajudar nesta jornada!

Valew - - sou mais java heim ! ! ! !

Eu sinceramente gosto das duas linguagens…

Java por ser multiplataforma e c# por ser “fácil” graças ao Visual Studio…po galera é muito fácil desenvolver um sistema com visual studio asp.net.

Mas uma coisa convenhamos…criar tela com Swing é um sofrimento (apesar de ser multiplataforma)… de repente pode ser fácil para profissionais muito experientes em java, mas é muito complicado para iniciantes e creio eu que até para muito intermediário que só é acostumado com jsp.

“O mercado vai se dividir entre estas duas linguagens” creio eu.

Falou

Ressussitando os mortos :lol:

sou novo no fórum… :lol:

é nem vamos perder tempo com este tópico… :smiley:

Java ou C#? Delphi ou Visual Basic? Eclipse ou Netbeans?

Acho que não adianta defender ferrenhamente uma tecnologia. O java não é perfeito e certamente aparecerá uma linguagem um dia que o substituirá.

Certamente o .Net também tem vantagens sobre o Java, como por exemplo a possibilidade de escrever em outras linguagens que não o C# e gerar binários compatíveis no final (certo, isso também seria possível se fizemos compiladores para bytecode, mas em .net já houve um investimento maciço nesse sentido).

Também tem desvantagens (como o pessoal fez questão de nos lembrar). Mas acho que ambos são linguagens extremamente poderosas e fáceis, com bibliotecas de classes extensas e poderosas.

Melhor ou pior vai depender muito do contexto. Se você trabalhar numa empresa onde 95% das aplicações são .Net, fazendo uso intenso da Tecnologia COM e onde nem sequer se pensa em Linux, haverá uma boa possibilidade de Java não ser uma boa opção.

Não estou contra o Java. Gosto muito da linguagem, tanto que é a minha opção de desenvolvimento hoje em dia. Mas também não precisamos ser “tietes” da linguagem, fechar aos olhos para o lado ruim e nem ficar falando mal do concorrente só por causa disso.

2003? aff…

Bom encerra o tópico então.