C# X Java  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
kina
JavaEvangelist
[Avatar]

Membro desde: 04/08/2004 18:53:19
Mensagens: 340
Localização: Sampa
Offline

ai galera, blz?
Estava conversando com um camarada meu e este me mostrou estes artigos abaixo falando pq C# é melhor que Java
C# Melhor que Java Parte I

C# Melhor que Java Parte II

Ai, eu só queria a opinião da galera.

falou

This message was edited 1 time. Last update was at 05/08/2005 13:11:56

[MSN] [ICQ]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

Aparentemente estes artigos são antigos e a comparação foi feita usando a versão 1.4. Quem escreveu é um cara competente mas TOTALMENTE adepto da M$. Será que este artigo é isento o bastante para que eu leia o resto?

Mas de qualquer forma não me importa qual é a melhor rodando somente no Windows. Faz tempo que dou valor a coisas que funcionam também em ambiente Unix-like e não sei se o C# já chegou lá.

[]s
Luca

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Post de blog velho, não considera Java 5. Diversas funcionalidades agora existem: autoboxing/unboxing, anotations, enums, foreach, varargs

Propriedades
Java: Não. Podem ser simuladas com métodos Get/Set, com alguma dificuldade.
C#: Sim, diretamente. A criação de ?componentes? é bastante facilitada.

"com alguma dificuldade". Isso que é benchmark.


Tipo numérico pouco sujeito a erros de representação e arredondamento
Java: não.

O cara não programa em Java


Campo readonly
Java: Não.

O cara REALMENTE não programa em Java


Documentação integrada em XML
Java: Não.
C#: Sim, permitindo que o programador escreva facilmente a documentação enquanto programa. Este documentação pode depois ser extraída do fonte ou usada no próprio ambiente de desenvolvimento.

Não é em XML mas faz a mesma coisa.


Arquivo ?executável? independente do namespace

Não sabia que C# fazia assim. Que perigo @.@


Former LIPE.
[ICQ]
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

Por uma questão de objetividade, esta comparação limita-se à linguagem de programação Java e não compara as plataformas da Sun e da Microsoft.


pediu pro java ir sem escudo e espada pra essa comparacao.

Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
kina
JavaEvangelist
[Avatar]

Membro desde: 04/08/2004 18:53:19
Mensagens: 340
Localização: Sampa
Offline

Uma coisa que eu achei legal foi o switch com String.
Bem que poderia ter ^^

Sim, estes artigos estão meio "desatualizados" ou comparando versões diferentes das atuais ^^
[MSN] [ICQ]
escordeiro
Java Ninja
[Avatar]
Membro desde: 20/08/2003 09:31:08
Mensagens: 257
Localização: Belo Horizonte
Offline

Além da defasagem de versão que o Luca comentou, existem algumas coisas estranhas nesse artigo. Sobre a Parte I:

Semelhanças: "Orientação por Objetos" e "Herança" são características separáveis??

Recursos novos em C#:

- Propriedades: Existe alguma dificuldade em criar getters e setters? Se não me engano, a sintaxe de propriedades em C# é mesmo interessante, mas é basicamente a mesma coisa...a diferença é que é criado um "método" de propriedade que implementa o get e o set

- Documentação integrada com XML: Nunca pesquisei, mas não é possível com algum Doclet?

- Arquivo "executável" independente do namespace:
"Um 'package' Java obrigatoriamente está associado a um único arquivo '.class'." Ahn????

- Chama APIs do Windows e DLLs: Pode chamar sim, com JNI

Flickr
[Email] [Yahoo!] [MSN] [ICQ]
kina
JavaEvangelist
[Avatar]

Membro desde: 04/08/2004 18:53:19
Mensagens: 340
Localização: Sampa
Offline

escordeiro wrote:
- Chama APIs do Windows e DLLs: Pode chamar sim, com JNI

Bem, ele não falou que não dava (eu acho), mas disse que é muito mais dificil que no C#.

[MSN] [ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Documentação XML - quá quá quá... Qual a diferença entre isto:

e isto:


Tudo bem, o .NET gera por default um arquivo XML contendo um resumo da documentação para poder ser lido por qualquer ferramenta que saiba ler XML, mas até aí não é nada que não possa ser resolvido via doclets.
[WWW]
escordeiro
Java Ninja
[Avatar]
Membro desde: 20/08/2003 09:31:08
Mensagens: 257
Localização: Belo Horizonte
Offline

Essa parte específica tem um "não" categórico e uma frase que explica outra coisa (go figure...)

Mas o artigo apresenta alguns pontos interessantes sim, apesar do autor ser um religioso "do outro lado"

Flickr
[Email] [Yahoo!] [MSN] [ICQ]
farribeiro
JavaEvangelist
[Avatar]

Membro desde: 20/04/2005 00:15:49
Mensagens: 474
Localização: Araçatuba
Offline

expandindo a resposta do povão que já foi respondida

http://www.guj.com.br/posts/list/2113.java

This message was edited 1 time. Last update was at 05/08/2005 14:00:59


Fábio Rodrigues Ribeiro
[WWW] [Yahoo!] [ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Há pouco tempo atrás tive de escrever um programa C# - nada demais, um serviço do Windows que atende a conexões TCP. O que achei legal no C#:
- Obviamente é bem mais simples fazer algo que precise chamar uma API do Windows - por exemplo, precisava criar um "hard link" para um arquivo, e isso requer chamar a API "CreateHardLink". Se fosse em Java teria de escrever uma DLL JNI - nada demais, mas é sempre um incômodo. (Existe o JAWIN para resolver esse problema de chamar APIs do Windows, mas não é fácil de usar - tente entender a string que o JAWIN usa para poder preencher os parâmetros para chamar as APIs...)
Em C# você usa:

- Aquelas coisas extremamente Windows-escas, como adicionar um contador ao Performance Monitor ou escrever no Event Viewer, são bastante simplificadas (são um parto de escrever em C++ no Windows, e já estão bem mastigadas no .NET Framework);
O que achei desajeitado:
- A filosofia é parecida com a do Java, mas as coisas estão nos lugares errados. Vou dar uma lista das equivalências para algumas classes que tive de usar.

java.util.HashMap -> System.Collections.Hashtable
java.io.InputStream -> System.IO.BinaryReader
java.io.OutputStream -> System.IO.BinaryWriter
java.io.File -> System.IO.File, System.IO.Directory
Class.forName ("Teste".newInstance -> Type.GetType("Teste".GetConstructor (new Type[0]).Invoke (new Object[0])
System.arraycopy -> Array.Copy
java.lang.StringBuffer, java.lang.StringBuilder -> System.Text.StringBuilder
new String(byte[], String), String.getBytes(String) -> System.Text.Encoding

This message was edited 1 time. Last update was at 05/08/2005 14:02:47

[WWW]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

Dei uma lidinha a mais no artigo e vi uma citação a um artigo de maio de 1996 ao explicar de forma incompleta como o Java é montado e omitir hotspot que segundo a Sun é tecnologia chave do Java. São coisas assim que tiram a credibilidade de um artigo. Pena, perdi a vontade de ler.

[]s
Luca

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
rodrigousp
JavaEvangelist
[Avatar]

Membro desde: 09/10/2003 14:23:31
Mensagens: 379
Offline

kina wrote:
escordeiro wrote:
- Chama APIs do Windows e DLLs: Pode chamar sim, com JNI

Bem, ele não falou que não dava (eu acho), mas disse que é muito mais dificil que no C#.



Por uma questão de objetividade, esta comparação limita-se à linguagem de programação Java e não compara as plataformas da Sun e da Microsoft.


E isto acima, não foi uma comparação de plataforma ??? Como é que faz mesmo para o C# chamar uma API do X-Window ???

Sobre o uso de Javadoc
Já viu o suporte que as IDE oferecem para Javadoc ? Um refactor do eclipse muda inclusive os javadocs (o visual.Net faz isso ?) Eu até achava a idéia do Knuth de escrever em CWEB legal, mas Javadoc é muito bom...


E mais uma coisa: Tratamento de exceções.
C# - você não é obrigado a tratar Exceptions.
Java - você é obrigado a tratar Exceptions ( a menos das RuntimeException) ou declarar que o método irá lança-las.


Rodrigo di Lorenzo Lopes - blogger
[MSN] [ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

rodrigousp wrote:E mais uma coisa: Tratamento de exceções.
C# - você não é obrigado a tratar Exceptions.
Java - você é obrigado a tratar Exceptions ( a menos das RuntimeException) ou declarar que o método irá lança-las.


É, percebi isso. Estou muito acostumado com o esquema do Java; quando vi que em C# isso não era obrigatório acabei ficando com uns programas assim em C# (o Visual Studio nem diz que exceção um trecho de código pode lançar - você tem de ficar procurando API por API o que pode acontecer )



O System.Exception do C# equivale ao java.lang.Throwable.


[WWW]
rodrigousp
JavaEvangelist
[Avatar]

Membro desde: 09/10/2003 14:23:31
Mensagens: 379
Offline

Coisas que não deveriam ter no C#:
Ponteiros: Perigoso e obscuro. É o tipo de coisa que a gente quer em linguagens de baixo-nível
Sobrecarga de operadores: torna o código sujo, difícil de ler.
Goto: sem comentários !!!

Argumentos irrelevantes quando comparar a linguagem e não a plataforma.
Chama APIs do Windows e DLLs
Chama objetos COM/COM+
Cria objetos COM/COM+
Destructor: na verdade, no Java não é o possível finalizar um objeto diretamente, mas o comportamento do destructor pode ser reimplementado, sobreescrevendo o método finalize.

Rodrigo di Lorenzo Lopes - blogger
[MSN] [ICQ]
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team