Re: [java-list] Re: Artigo Java x C# GEA2

2001-10-05 Por tôpico Michael Santos

Original Message Follows
From: Alessandro Romero [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: Re: [java-list] Re: Artigo Java x C# GEA2
Date: Thu, 4 Oct 2001 11:05:02 -0300

Amigos,

   O interessante aqui, é perceber que quando programamos:
 String s;
 s = ale;
   Isto é o mesmo que
 s = new String( ale );

Not really... Qdo vc faz dessa segunda forma, vc criou dois objetos 
diferentes...

-
Michael Nascimento Santos
Sun Certified Programmer for the Java 2 Platform
Moderador SouJava - www.soujava.org.br

_
Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp


-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-




RE: [java-list] Re: Artigo Java x C# - CONCLUSAO FINAL

2001-10-05 Por tôpico Silent Bob

A vantagem disso e' performance. Nao sei se voce
programa em C++ ou nao, mas toda vez que voce passa um
objeto por referencia vc requer uma alocacao na heap,
o que custa mais caro em termos de performance do que
um parametro passado na stack. Entao por exemplo, se
voce tiver que escrever uma classe wrapper para poder
alterar um valor int dentro de uma funcao, o seu
programa esta fazendo basicamente as seguintes
operacoes:

- criar instancia da classe wrapper - alocacao
dinamica na heap
- colocar valor inteiro dentro desta instancia
- coloca referencia na stack
- chama funcao MudaValor

Dentro da funcao MudaValor.
- Dereferencia a referencia (que nada mais e' que um
pointer)
- altera o valor atraves do pointer
- retorna

Quando vc passa por referencia, voce executa as
seguintes operacoes:
- coloca valor inteiro na stack
- chama funcao
Dentro da funcao MudaValor:
- altera valor na stack
- retorna

O numero de operacoes e' significativamente menor. Ai'
tambem tem outra coisa relacionada que eu notei que o
pessoal nao entendeu muito bem porque o C# tem
structs.

Quando voce declara:

class Point
{
  int x;
  int y;
}

em C#, funciona exatamente igual a Java. Ou seja,
quando voce faz:

Point p = new Point()
p.x = 1;
p.y = 2;

voce esta' fazendo por tras:
- Aloca instancia na Heap de 8 bytes (2 inteiros)
- incrementa o stack pointer para guardar a referencia
a instancia na heap
- dereferencia o pointer
- atraves do pointer muda o valor de x
- atraves do pointer muda o valor de y

Agora em C#, para evitar o custo da dereferencia do
pointer ou alocacao na heap, se voce usa structs:

struct Point
{
  int x;
  int y;
}

O compilador entende que esse e' um tipo de valor,
logo, isso vai ser alocado sempre na Stack:

Point p = new Point()
p.x = 1;
p.y = 2;

- Incrementa o stack pointer em 8 posicoes
- altera o valor de x na stack
- altera o valor de y na stack

note que nenhuma alocacao dinamica teve que acontecer.

Em outras palavras, structs em C# e' completamente
diferente de structs em C/C++. Alem disso a razao dele
existir e' a mesma porque o Java nao deriva int e char
de Object: performance. A diferenca aqui e' que em C#
voce pode levar esse ganho de performance para tipos
definidos pelo usuario, enquanto que em Java, voce
esta preso ao que foi especificado pela linguagem.

My 2 cents.

Marcelo Uemura
Software Design Engineer
Microsoft Corporation - MSDN

Disclaimer: o conteudo dessa mensagem e' minha opiniao
pessoal e de maneira nenhuma representa uma posicao
oficial da Microsoft.  



--- Sergio Oliveira Jr. [EMAIL PROTECTED] wrote:
 
 Realmente Java faz uma cópia da referencia antes de
 passá-la para a função, 
 mas estou curioso para saber qual é a diferença que
 isso faz na prática?
 
 Posso estar errado, mas acho que toda essa confusão
 veio da diferença que em 
 C++ Strings são mutáveis e em Java não são.
 
 O ponto é: Não dá para alterar a cópia da referência
 que ficou fora da 
 função de dentro da função.
 
 Em C++ vc pode fazer isso MESMO PARA OBJETOS
 IMUTÁVEIS:
 
 altereIsso(a, b, c);
 
 Em Java não dá para fazer isso para OBJETOS
 IMUTÁVEIS:
 
 altereIsso(a, b, c); // Não dá se for imutável.
 
 Se for imutável em Java vc terá que fazer:
 
 a = altereIsso(a);
 b = altereIsso(b);
 c = altereIsso(c);
 
 NA MINHA CABEÇA ISSO É MAIS UMA DIFERENÇA NA SINTAXE
 DA LINGUAGEM DO QUE UMA 
 VANTAGEM. Mas pode ser que alguém apresente algum
 caso em que isso seria 
 realmente uma vantagem de C++/C#.
 
 ---
 Sergio Oliveira Jr.
 Sun Certified Java Programmer
 Desenvolvedor e Consultor Java
 Empresa SmartJava
 WWW.SMARTJAVA.COM.BR
 Dê ao homem um peixe e alimente-o
 por um dia. Ensine-o a pescar e
 alimente-o por uma vida.
 ---
 
 
 
 From: Luiz Fernando Bicalho [EMAIL PROTECTED]
 Reply-To: [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Subject: RE: [java-list] Re: Artigo Java x C#
 Date: Thu, 4 Oct 2001 10:06:10 -0300
 
 entao o cara esta certo, e passagem por valor
 
 
 
 -Original Message-
 From: Ricardo Santiago
 [mailto:[EMAIL PROTECTED]]
 Sent: quinta-feira, 4 de outubro de 2001 07:58
 To: [EMAIL PROTECTED]
 Subject: Re: [java-list] Re: Artigo Java x C#
 
 
 
 Cara, neste caso voce esta MUDANDO a referencia que
 voce recebeu.
 Voce esta criando uma NOVA referencia e tentando
 atribuir ` referencia que voce recebeu como
 parametro.
 
 Mas a passagem de objetos EH por referencia (as
 referencias sao passadas por valor)
 
 Exemplo:
 
 class Numero {
 
private int value;
 
public Numero(int value) {
  this.value = value;
}
 
public void inc() {
  value++;
}
 
public int getValue() {
  return value;
}
 
public static void main(String [] s) {
  Numero num = new Numero(1);
  System.out.println(num  + num.getValue());
  increment(num);
  System.out.println(num  + num.getValue());
}
 
private static void increment(Numero num) {
  num.inc();
}
 
 }
 
 Ricardo Munhoz Santiago

Re: [java-list] Re: Artigo Java x C#

2001-10-04 Por tôpico Marcos Guedes

  Bem, sei que não tenho ainda tanta experiência com
Java, mas o que aprendi no Thinking in Java de Bruce
Eckel é exatamente o que o Carlos Chierici falou:
objetos são sempre passados por referência. 
  

--- Leonardo Souza Mario Bueno [EMAIL PROTECTED]
escreveu:  Nain, nain. Java não tem passagem por
referencia nem
 para objetos.
 
 Ex:
 
 public void inc(Integer i) {
 i = new Integer(i.intValue()++);
 System.out.println(i =  + i); // i = 2
 }
 
 i = new Integer(1);
 inc(i);
 System.out.println(i =  + i); // i = 1
 
 Resultado:
 
 i = 2
 i = 1
 
 Ao chamar inc(i) é passada uma referencia ao objeto
 i por valor.. ou seja,
 mudanças na referencia dentro do metodo não terão
 efeito fora dele..
 
 []'s,
 
 Leonardo.
 
 - Original Message -
 From: Carlos E O Chierici [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Wednesday, October 03, 2001 1:35 PM
 Subject: Re: [java-list] Re: Artigo Java x C#
 
 
  A passagem de parametros em Java funciona assim:
 
  - P/ objetos: por referencia
  - P/ primitivos: por valor
 
  Veja o exemplo:
 
  public class Teste
  {
 public void run()
 {
TObj obj = new TObj();
obj .i = 3;
System.out.println(obj.i); // obj.i = 3
NovoInt(obj);
System.out.println(obj.i); // obj.i = 5
 }
 
 public void NovoInt(TObj meuObj)
 {
meuObj.i = 5;
 }
 
 public static void main(String args[])
 {
Teste t = new Teste();
 t.run();
 }
  }
 
  class TObj
  {
 public int i;
  }
 
 
  []s
 
  Carlos E O Chierici
  [EMAIL PROTECTED]
 
  - Original Message -
 
  From: [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Wednesday, October 03, 2001 9:52 AM
  Subject: RE: [java-list] Re: Artigo Java x C#
 
 
  Sérgio,
 
  Eu gostaria de fazer uma pequena correção no seu
 email.
 
  Java não possui passagem por referência. Somente
 por valor. Existe uma
 forma
  de simular passagem de parâmetros por
 referência, utilizando os objetos
 ou
  tipos primitivos armazenados em um array, por
 exemplo. Mas não existe
  passagem por referência.
 
  Antes que o alguém dê pulinhos de alegria, eu
 pergunto: e qual é o
 problema?
  Alguém por favor, apresente um artigo
 demonstrativo, baseado em testes de
  performance ou de algum requisito que mostre qual
 é o grandisíssimo
 problema
  de Java utilizar passagem por valor, e não por
 referência? Mesmo que haja,
  isso significa que Java é ruim?
 
  Abraços,
  Denard
 
 
  -- LISTA SOUJAVA
 
  http://www.soujava.org.br  -  Sociedade de
 Usuários Java da Sucesu-SP
  dúvidas mais comuns:
 http://www.soujava.org.br/faq.htm
  regras da lista:
 http://www.soujava.org.br/regras.htm
  para sair da lista: envie email para
 [EMAIL PROTECTED]
 

-
 
 
 
 -- LISTA SOUJAVA
  
 http://www.soujava.org.br  -  Sociedade de Usuários
 Java da Sucesu-SP 
 dúvidas mais comuns:
 http://www.soujava.org.br/faq.htm
 regras da lista:
 http://www.soujava.org.br/regras.htm
 para sair da lista: envie email para
 [EMAIL PROTECTED] 

-
  

___
Yahoo! GeoCities
Tenha seu lugar na Web. Construa hoje mesmo sua home page no Yahoo! GeoCities. É fácil 
e grátis!
http://br.geocities.yahoo.com/

-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-




Re: [java-list] Re: Artigo Java x C#

2001-10-04 Por tôpico Ricardo Santiago


Cara, neste caso voce esta MUDANDO a referencia que
voce recebeu.
Voce esta criando uma NOVA referencia e tentando
atribuir à referencia que voce recebeu como parametro.

Mas a passagem de objetos EH por referencia (as
referencias sao passadas por valor)

Exemplo:

class Numero {

  private int value;

  public Numero(int value) {
this.value = value;
  }

  public void inc() {
value++;
  }

  public int getValue() {
return value;
  }

  public static void main(String [] s) {
Numero num = new Numero(1);
System.out.println(num  + num.getValue());
increment(num);
System.out.println(num  + num.getValue());
  }

  private static void increment(Numero num) {
num.inc();
  }

}

Ricardo Munhoz Santiago

--- Leonardo Souza Mario Bueno [EMAIL PROTECTED]
wrote:
 Nain, nain. Java não tem passagem por referencia nem
 para objetos.
 
 Ex:
 
 public void inc(Integer i) {
 i = new Integer(i.intValue()++);
 System.out.println(i =  + i); // i = 2
 }
 
 i = new Integer(1);
 inc(i);
 System.out.println(i =  + i); // i = 1
 
 Resultado:
 
 i = 2
 i = 1
 
 Ao chamar inc(i) é passada uma referencia ao objeto
 i por valor.. ou seja,
 mudanças na referencia dentro do metodo não terão
 efeito fora dele..
 
 []'s,
 
 Leonardo.
 
 - Original Message -
 From: Carlos E O Chierici [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Wednesday, October 03, 2001 1:35 PM
 Subject: Re: [java-list] Re: Artigo Java x C#
 
 
  A passagem de parametros em Java funciona assim:
 
  - P/ objetos: por referencia
  - P/ primitivos: por valor
 
  Veja o exemplo:
 
  public class Teste
  {
 public void run()
 {
TObj obj = new TObj();
obj .i = 3;
System.out.println(obj.i); // obj.i = 3
NovoInt(obj);
System.out.println(obj.i); // obj.i = 5
 }
 
 public void NovoInt(TObj meuObj)
 {
meuObj.i = 5;
 }
 
 public static void main(String args[])
 {
Teste t = new Teste();
 t.run();
 }
  }
 
  class TObj
  {
 public int i;
  }
 
 
  []s
 
  Carlos E O Chierici
  [EMAIL PROTECTED]
 
  - Original Message -
 
  From: [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Wednesday, October 03, 2001 9:52 AM
  Subject: RE: [java-list] Re: Artigo Java x C#
 
 
  Sérgio,
 
  Eu gostaria de fazer uma pequena correção no seu
 email.
 
  Java não possui passagem por referência. Somente
 por valor. Existe uma
 forma
  de simular passagem de parâmetros por
 referência, utilizando os objetos
 ou
  tipos primitivos armazenados em um array, por
 exemplo. Mas não existe
  passagem por referência.
 
  Antes que o alguém dê pulinhos de alegria, eu
 pergunto: e qual é o
 problema?
  Alguém por favor, apresente um artigo
 demonstrativo, baseado em testes de
  performance ou de algum requisito que mostre qual
 é o grandisíssimo
 problema
  de Java utilizar passagem por valor, e não por
 referência? Mesmo que haja,
  isso significa que Java é ruim?
 
  Abraços,
  Denard
 
 
  -- LISTA SOUJAVA
 
  http://www.soujava.org.br  -  Sociedade de
 Usuários Java da Sucesu-SP
  dúvidas mais comuns:
 http://www.soujava.org.br/faq.htm
  regras da lista:
 http://www.soujava.org.br/regras.htm
  para sair da lista: envie email para
 [EMAIL PROTECTED]
 

-
 
 
 
 -- LISTA SOUJAVA
  
 http://www.soujava.org.br  -  Sociedade de Usuários
 Java da Sucesu-SP 
 dúvidas mais comuns:
 http://www.soujava.org.br/faq.htm
 regras da lista:
 http://www.soujava.org.br/regras.htm
 para sair da lista: envie email para
 [EMAIL PROTECTED] 

-
 


__
Do You Yahoo!?
NEW from Yahoo! GeoCities - quick and easy web site hosting, just $8.95/month.
http://geocities.yahoo.com/ps/info1

-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-




RE: [java-list] Re: Artigo Java x C# GEA2

2001-10-04 Por tôpico Ricardo Santiago


Não estou querendo te chamar de louco, mas acho que
voce deveria ter testado antes de dizer que sempre
funcionou errado.
Por voce mesmo nao testa?

public class ProvaDaPassagemPorValor {

  public static void main(String [] s) {
String s = test;
int i = 1;
mudeOsValores(s, i);
System.out.println(s + i);

  }

  private static void mudeOsValores(String s, int i) {
 s = outroValor;
 i = 2;
  }

}

Ricardo Munhoz Santiago

--- Wild Boar Wannabe [EMAIL PROTECTED]
wrote:
 
  Perae !!! Eh claro que refletira as mudancas !!!
 Apos
 ser chamado o metodo mudeOsValores() o inteiro e a
 String mandados por parametro terao seus valores
 mudados !!! Ou entao eu tou louco !!! Por que sempre
 foi assim pra mim ...
 
  --- Ricardo Santiago [EMAIL PROTECTED]
 escreveu:  
  Cara, vamos deixar claro:
  Tudo em java é passado por valor.
  MAS, você só mantém REFERENCIAS para objetos (ou
  pointeiros se achar melhor).
  Logo, todo objeto é passado por referencia visto
 que
  a
  referencia é que é passada por valor!
  
  Isso não implica de forma alguma em perda de
  performance, simplesmente significa que qq
 váriavel
  que você passar como paramêtro, se for modificada
  dentro do método invocado,não refletirá as
 mudanças
  quando o método retornar
  
  Como em:
  
  String s = test;
  int i = 1;
  
  mudeOsValores(s, i);
  
  System.out.println(s + 1); // == test1
  
  Onde o metodo mudeOsValores contem o seguinte
 codigo
  
  public void mudeOsValores(String s, int i) {
s = outracoisa;
i = 2;
  }
  
  Ricardo Munhoz Santiago
  --- [EMAIL PROTECTED] wrote:
   Sérgio,
   
   Eu gostaria de fazer uma pequena correção no seu
   email.
   
   Java não possui passagem por referência. Somente
  por
   valor. Existe uma forma
   de simular passagem de parâmetros por
  referência,
   utilizando os objetos ou
   tipos primitivos armazenados em um array, por
   exemplo. Mas não existe
   passagem por referência.
   
   Antes que o alguém dê pulinhos de alegria, eu
   pergunto: e qual é o problema?
   Alguém por favor, apresente um artigo
  demonstrativo,
   baseado em testes de
   performance ou de algum requisito que mostre
 qual
  é
   o grandisíssimo problema
   de Java utilizar passagem por valor, e não por
   referência? Mesmo que haja,
   isso significa que Java é ruim?
   
   Abraços,
   Denard
   
   -Original Message-
   From: Sergio Oliveira Jr.
   [mailto:[EMAIL PROTECTED]] 
   Sent: terça-feira, 2 de outubro de 2001 22:56
   To: [EMAIL PROTECTED]
   Cc: [EMAIL PROTECTED];
   [EMAIL PROTECTED]
   Subject: [java-list] Re: Artigo Java x C#
   
   Mauro,
   
   Não era a minha intensão te tirar do sério. Não
  vejo
   problema algum em me 
   engajar num papo com você face-to-face. Só estou
   conversando com você via 
   email por ser mais conveniente, afinal a
  tecnologia
   está aí para facilitar a
   
   nossa vida, certo?
   
   Vou continuar falando racionalmente, apesar de
 não
   ver nenhum problema em te
   
   encontrar para um papo mais descontraído.
   
   Alguns absurdos que vc escreveu:
   
   - Java não possui todos os tipos derivados de
   ancestral comum:
   
   Possui sim... Além de possuir tipos primitivos
  mais
   leves, que por sua vez 
   possuem suas classes equivalentes (Wrappers).
  Todas
   são derivadas da class 
   Object.
   
   - Java não possui Structs:
   
   Realmente não possui a palavra Structs, mas é
   ridículo simular um C Struct 
   com uma class ou inner class.
   
   - Java não pode passar parametros por
 referencia:
   
   Todos os objetos Java são passados por
 referencia.
   Qualquer principiante em 
   Java precisa saber disso.
   
   - Java não possui Propriedades:
   
   Já ouviu falar em JavaBeans ??? Tb existe uma
  classe
   Properties que faz isso
   
   facilmente.
   
   - Java categoricamente não possui eventos nem
   delegate:
   
   Toda a GUI do Java é orientada a eventos e a
   listeners.
   Java não possui ponteiros para funções, mas
 possui
   interfaces que podem 
   facilmente e de uma forma mais elegante e
 poderosa
   realizar callbacks.
   
   - Java não possui Atributos:
   
   Não sei o que vc quiz dizer com isso, mas Java
   possui uma API de Reflection 
   poderosíssima.
   
   - Java não possui Ponteiros:
   
   Ainda bem! Referencia = Ponteiro com a excessão
  que
   não podemos fazer 
   operações aritiméticas com referencias.
   Todo mundo sabe que os ponteiros sempre foram a
   maior fonte de bugs, falhas 
   de segurança, vírus e dores de cabeça para os
   programadores C.
   
   - Java não possui Forech: loop para varrer
 arrays
  e
   coleções
   
   Dê uma olhada na API Collections. Vc vai ficar
   impressionado com a 
   qualidade, eficiência e performance dessa API.
   
   - Java não possui Campos readonly.
   
   Lógico que possui. Basta utilizar final.
   
   - Java não possui Documentação integrada em XML.
   
   Javadoc serve exatamente para isso que vc sugere
   como vantagem do C#.
   
   - Java

Fwd: Re: [java-list] Re: Artigo Java x C#

2001-10-04 Por tôpico Gabriel De Munno Francisco

Leonardo,
Esqueci de falar que realmente analisei seu exemplo incorretamente,
desculpe-me, final do dia, muitas discussões, dá nisso mesmo ... não vi
que vc estava alterando a referência i, achei que vc estava incrementando
um tipo primitivo int dentro da função.
Gabriel
Date: Wed, 03 Oct 2001 21:21:56
-0300
To: Leonardo Bueno [EMAIL PROTECTED],
[EMAIL PROTECTED]
From: Gabriel De Munno Francisco [EMAIL PROTECTED]
Subject: Re: [java-list] Re: Artigo Java x C#
Tudo bem,
Mas daí você cai no caso da classe imutável já explicado num email na
lista... O objeto Integer é public final class
Integer
Por isso, você não pode alterar o valor, somente criando um novo
objeto...
Gabriel

At 20:51 03/10/2001 -0300, Leonardo Bueno wrote:
Acho que não.. no meu exemplo o
metod inc altera o valor da copia local de i
ao fazer a atribuição i = new Integer(i.intValue()++); ou estou
enganado?
Novamente: em java, toda a passagem de parametros e por valor,
inclusive
quando usamos objetos como parametros... neste caso a referencia e
passada
por valor.
[]'s,
Leonardo.
- Original Message -
From: Gabriel De Munno Francisco
[EMAIL PROTECTED]
To: [EMAIL PROTECTED];
[EMAIL PROTECTED]
Cc: Leonardo Souza Mario Bueno
[EMAIL PROTECTED]
Sent: Wednesday, October 03, 2001 8:27 PM
Subject: Re: [java-list] Re: Artigo Java x C#

Leornardo,
Você está equivocado, no exemplo que você deu, o método não está
alterando
o objeto, está simplesmente imprimindo o resultado da chamada do
método
intValue() incrementado de 1, por isso não houve mudança no valor do
objeto
durante a chamada.
Mas em Java, quando você passa um objeto, vc está passando uma
referência.
Gabriel
At 17:36 03/10/2001 -0300, Leonardo Souza Mario Bueno wrote:
Nain, nain. Java não tem passagem por referencia nem para
objetos.

Ex:

 public void inc(Integer i) {
 i = new
Integer(i.intValue()++);

System.out.println(i =  + i); // i = 2
 }

 i = new Integer(1);
 inc(i);
 System.out.println(i =  + i); //
i = 1

Resultado:

i = 2
i = 1

Ao chamar inc(i) é passada uma referencia ao objeto i por valor.. ou
seja,
mudanças na referencia dentro do metodo não terão efeito fora
dele..

[]'s,

Leonardo.

- Original Message -
From: Carlos E O Chierici
[EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, October 03, 2001 1:35 PM
Subject: Re: [java-list] Re: Artigo Java x C#


  A passagem de parametros em Java funciona assim:
 
  - P/ objetos: por referencia
  - P/ primitivos: por valor
 
  Veja o exemplo:
 
  public class Teste
  {
  public void run()
  {
  TObj obj = new 
TObj();
  obj .i = 3;
  System.out.println(obj.i);
// obj.i = 3
  NovoInt(obj);
  System.out.println(obj.i);
// obj.i = 5
  }
 
  public void NovoInt(TObj meuObj)
  {
  meuObj.i = 5;
  }
 
  public static void main(String args[])
  {
  Teste t = new 
Teste();
  t.run();
  }
  }
 
  class TObj
  {
  public int i;
  }
 
 
  []s
 
  Carlos E O Chierici
  [EMAIL PROTECTED]
 
  - Original Message -
 
  From: [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Wednesday, October 03, 2001 9:52 AM
  Subject: RE: [java-list] Re: Artigo Java x C#
 
 
  Sérgio,
 
  Eu gostaria de fazer uma pequena correção no seu email.
 
  Java não possui passagem por referência. Somente por valor.
Existe uma
forma
  de simular passagem de parâmetros por referência,
utilizando os
objetos
ou
  tipos primitivos armazenados em um array, por exemplo. Mas não
existe
  passagem por referência.
 
  Antes que o alguém dê pulinhos de alegria, eu pergunto: e qual
é o
problema?
  Alguém por favor, apresente um artigo demonstrativo, baseado em
testes
de
  performance ou de algum requisito que mostre qual é o
grandisíssimo
problema
  de Java utilizar passagem por valor, e não por referência?
Mesmo que
haja,
  isso significa que Java é ruim?
 
  Abraços,
  Denard
 
 
  -- LISTA
SOUJAVA 
 
http://www.soujava.org.br
- Sociedade de Usuários Java da Sucesu-SP
  dúvidas mais comuns: http://www.soujava.org.br/faq.htm
  regras da lista: http://www.soujava.org.br/regras.htm
  para sair da lista: envie email para
[EMAIL PROTECTED]

 -
 


-- LISTA SOUJAVA 
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-


Re: [java-list] Re: Artigo Java x C#

2001-10-04 Por tôpico Gabriel De Munno Francisco

Tudo bem,
Mas daí você cai no caso da classe imutável já explicado num email na
lista... O objeto Integer é public final class
Integer
Por isso, você não pode alterar o valor, somente criando um novo
objeto...
Gabriel

At 20:51 03/10/2001 -0300, Leonardo Bueno wrote:
Acho que não.. no meu exemplo o
metod inc altera o valor da copia local de i
ao fazer a atribuição i = new Integer(i.intValue()++); ou estou
enganado?
Novamente: em java, toda a passagem de parametros e por valor,
inclusive
quando usamos objetos como parametros... neste caso a referencia e
passada
por valor.
[]'s,
Leonardo.
- Original Message -
From: Gabriel De Munno Francisco
[EMAIL PROTECTED]
To: [EMAIL PROTECTED];
[EMAIL PROTECTED]
Cc: Leonardo Souza Mario Bueno
[EMAIL PROTECTED]
Sent: Wednesday, October 03, 2001 8:27 PM
Subject: Re: [java-list] Re: Artigo Java x C#

Leornardo,
Você está equivocado, no exemplo que você deu, o método não está
alterando
o objeto, está simplesmente imprimindo o resultado da chamada do
método
intValue() incrementado de 1, por isso não houve mudança no valor do
objeto
durante a chamada.
Mas em Java, quando você passa um objeto, vc está passando uma
referência.
Gabriel
At 17:36 03/10/2001 -0300, Leonardo Souza Mario Bueno wrote:
Nain, nain. Java não tem passagem por referencia nem para
objetos.

Ex:

 public void inc(Integer i) {
 i = new
Integer(i.intValue()++);

System.out.println(i =  + i); // i = 2
 }

 i = new Integer(1);
 inc(i);
 System.out.println(i =  + i); //
i = 1

Resultado:

i = 2
i = 1

Ao chamar inc(i) é passada uma referencia ao objeto i por valor.. ou
seja,
mudanças na referencia dentro do metodo não terão efeito fora
dele..

[]'s,

Leonardo.

- Original Message -
From: Carlos E O Chierici
[EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, October 03, 2001 1:35 PM
Subject: Re: [java-list] Re: Artigo Java x C#


  A passagem de parametros em Java funciona assim:
 
  - P/ objetos: por referencia
  - P/ primitivos: por valor
 
  Veja o exemplo:
 
  public class Teste
  {
  public void run()
  {
  TObj obj = new 
TObj();
  obj .i = 3;
  System.out.println(obj.i);
// obj.i = 3
  NovoInt(obj);
  System.out.println(obj.i);
// obj.i = 5
  }
 
  public void NovoInt(TObj meuObj)
  {
  meuObj.i = 5;
  }
 
  public static void main(String args[])
  {
  Teste t = new 
Teste();
  t.run();
  }
  }
 
  class TObj
  {
  public int i;
  }
 
 
  []s
 
  Carlos E O Chierici
  [EMAIL PROTECTED]
 
  - Original Message -
 
  From: [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Wednesday, October 03, 2001 9:52 AM
  Subject: RE: [java-list] Re: Artigo Java x C#
 
 
  Sérgio,
 
  Eu gostaria de fazer uma pequena correção no seu email.
 
  Java não possui passagem por referência. Somente por valor.
Existe uma
forma
  de simular passagem de parâmetros por referência,
utilizando os
objetos
ou
  tipos primitivos armazenados em um array, por exemplo. Mas não
existe
  passagem por referência.
 
  Antes que o alguém dê pulinhos de alegria, eu pergunto: e qual
é o
problema?
  Alguém por favor, apresente um artigo demonstrativo, baseado em
testes
de
  performance ou de algum requisito que mostre qual é o
grandisíssimo
problema
  de Java utilizar passagem por valor, e não por referência?
Mesmo que
haja,
  isso significa que Java é ruim?
 
  Abraços,
  Denard
 
 
  -- LISTA
SOUJAVA 
 
http://www.soujava.org.br
- Sociedade de Usuários Java da Sucesu-SP
  dúvidas mais comuns: http://www.soujava.org.br/faq.htm
  regras da lista: http://www.soujava.org.br/regras.htm
  para sair da lista: envie email para
[EMAIL PROTECTED]

 -
 


-- LISTA SOUJAVA 
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-


Re: [java-list] Re: Artigo Java x C#

2001-10-04 Por tôpico Leonardo Bueno

Acho que não.. no meu exemplo o metod inc altera o valor da copia local de i
ao fazer a atribuição i = new Integer(i.intValue()++); ou estou enganado?
Novamente: em java, toda a passagem de parametros e por valor, inclusive
quando usamos objetos como parametros... neste caso a referencia e passada
por valor.

[]'s,

Leonardo.
- Original Message -
From: Gabriel De Munno Francisco [EMAIL PROTECTED]
To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
Cc: Leonardo Souza Mario Bueno [EMAIL PROTECTED]
Sent: Wednesday, October 03, 2001 8:27 PM
Subject: Re: [java-list] Re: Artigo Java x C#


Leornardo,

Você está equivocado, no exemplo que você deu, o método não está alterando
o objeto, está simplesmente imprimindo o resultado da chamada do método
intValue() incrementado de 1, por isso não houve mudança no valor do objeto
durante a chamada.

Mas em Java, quando você passa um objeto, vc está passando uma referência.

Gabriel

At 17:36 03/10/2001 -0300, Leonardo Souza Mario Bueno wrote:
Nain, nain. Java não tem passagem por referencia nem para objetos.

Ex:

 public void inc(Integer i) {
 i = new Integer(i.intValue()++);
 System.out.println(i =  + i); // i = 2
 }

 i = new Integer(1);
 inc(i);
 System.out.println(i =  + i); // i = 1

Resultado:

i = 2
i = 1

Ao chamar inc(i) é passada uma referencia ao objeto i por valor.. ou seja,
mudanças na referencia dentro do metodo não terão efeito fora dele..

[]'s,

Leonardo.

- Original Message -
From: Carlos E O Chierici [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, October 03, 2001 1:35 PM
Subject: Re: [java-list] Re: Artigo Java x C#


  A passagem de parametros em Java funciona assim:
 
  - P/ objetos: por referencia
  - P/ primitivos: por valor
 
  Veja o exemplo:
 
  public class Teste
  {
 public void run()
 {
TObj obj = new TObj();
obj .i = 3;
System.out.println(obj.i); // obj.i = 3
NovoInt(obj);
System.out.println(obj.i); // obj.i = 5
 }
 
 public void NovoInt(TObj meuObj)
 {
meuObj.i = 5;
 }
 
 public static void main(String args[])
 {
Teste t = new Teste();
 t.run();
 }
  }
 
  class TObj
  {
 public int i;
  }
 
 
  []s
 
  Carlos E O Chierici
  [EMAIL PROTECTED]
 
  - Original Message -
 
  From: [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Wednesday, October 03, 2001 9:52 AM
  Subject: RE: [java-list] Re: Artigo Java x C#
 
 
  Sérgio,
 
  Eu gostaria de fazer uma pequena correção no seu email.
 
  Java não possui passagem por referência. Somente por valor. Existe uma
forma
  de simular passagem de parâmetros por referência, utilizando os
objetos
ou
  tipos primitivos armazenados em um array, por exemplo. Mas não existe
  passagem por referência.
 
  Antes que o alguém dê pulinhos de alegria, eu pergunto: e qual é o
problema?
  Alguém por favor, apresente um artigo demonstrativo, baseado em testes
de
  performance ou de algum requisito que mostre qual é o grandisíssimo
problema
  de Java utilizar passagem por valor, e não por referência? Mesmo que
haja,
  isso significa que Java é ruim?
 
  Abraços,
  Denard
 
 
  -- LISTA
SOUJAVA 
  http://www.soujava.org.br -  Sociedade de Usuários Java da Sucesu-SP
  dúvidas mais comuns: http://www.soujava.org.br/faq.htm
  regras da lista: http://www.soujava.org.br/regras.htm
  para sair da lista: envie email para
[EMAIL PROTECTED]

 -
 


-- LISTA SOUJAVA 
http://www.soujava.org.br -  Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-



-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-




Re: [java-list] Re: Artigo Java x C#

2001-10-04 Por tôpico Gabriel De Munno Francisco

Leornardo,

Você está equivocado, no exemplo que você deu, o método não está alterando 
o objeto, está simplesmente imprimindo o resultado da chamada do método 
intValue() incrementado de 1, por isso não houve mudança no valor do objeto 
durante a chamada.

Mas em Java, quando você passa um objeto, vc está passando uma referência.

Gabriel

At 17:36 03/10/2001 -0300, Leonardo Souza Mario Bueno wrote:
Nain, nain. Java não tem passagem por referencia nem para objetos.

Ex:

 public void inc(Integer i) {
 i = new Integer(i.intValue()++);
 System.out.println(i =  + i); // i = 2
 }

 i = new Integer(1);
 inc(i);
 System.out.println(i =  + i); // i = 1

Resultado:

i = 2
i = 1

Ao chamar inc(i) é passada uma referencia ao objeto i por valor.. ou seja,
mudanças na referencia dentro do metodo não terão efeito fora dele..

[]'s,

Leonardo.

- Original Message -
From: Carlos E O Chierici [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, October 03, 2001 1:35 PM
Subject: Re: [java-list] Re: Artigo Java x C#


  A passagem de parametros em Java funciona assim:
 
  - P/ objetos: por referencia
  - P/ primitivos: por valor
 
  Veja o exemplo:
 
  public class Teste
  {
 public void run()
 {
TObj obj = new TObj();
obj .i = 3;
System.out.println(obj.i); // obj.i = 3
NovoInt(obj);
System.out.println(obj.i); // obj.i = 5
 }
 
 public void NovoInt(TObj meuObj)
 {
meuObj.i = 5;
 }
 
 public static void main(String args[])
 {
Teste t = new Teste();
 t.run();
 }
  }
 
  class TObj
  {
 public int i;
  }
 
 
  []s
 
  Carlos E O Chierici
  [EMAIL PROTECTED]
 
  - Original Message -
 
  From: [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Wednesday, October 03, 2001 9:52 AM
  Subject: RE: [java-list] Re: Artigo Java x C#
 
 
  Sérgio,
 
  Eu gostaria de fazer uma pequena correção no seu email.
 
  Java não possui passagem por referência. Somente por valor. Existe uma
forma
  de simular passagem de parâmetros por referência, utilizando os objetos
ou
  tipos primitivos armazenados em um array, por exemplo. Mas não existe
  passagem por referência.
 
  Antes que o alguém dê pulinhos de alegria, eu pergunto: e qual é o
problema?
  Alguém por favor, apresente um artigo demonstrativo, baseado em testes de
  performance ou de algum requisito que mostre qual é o grandisíssimo
problema
  de Java utilizar passagem por valor, e não por referência? Mesmo que haja,
  isso significa que Java é ruim?
 
  Abraços,
  Denard
 
 
  -- LISTA SOUJAVA 
  http://www.soujava.org.br -  Sociedade de Usuários Java da Sucesu-SP
  dúvidas mais comuns: http://www.soujava.org.br/faq.htm
  regras da lista: http://www.soujava.org.br/regras.htm
  para sair da lista: envie email para [EMAIL PROTECTED]
  -
 


-- LISTA SOUJAVA 
http://www.soujava.org.br -  Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-


-- LISTA SOUJAVA 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-




RE: [java-list] Re: Artigo Java x C#

2001-10-04 Por tôpico Luiz Fernando Bicalho

entao o cara esta certo, e passagem por valor



-Original Message-
From: Ricardo Santiago [mailto:[EMAIL PROTECTED]]
Sent: quinta-feira, 4 de outubro de 2001 07:58
To: [EMAIL PROTECTED]
Subject: Re: [java-list] Re: Artigo Java x C#



Cara, neste caso voce esta MUDANDO a referencia que
voce recebeu.
Voce esta criando uma NOVA referencia e tentando
atribuir ` referencia que voce recebeu como parametro.

Mas a passagem de objetos EH por referencia (as
referencias sao passadas por valor)

Exemplo:

class Numero {

  private int value;

  public Numero(int value) {
this.value = value;
  }

  public void inc() {
value++;
  }

  public int getValue() {
return value;
  }

  public static void main(String [] s) {
Numero num = new Numero(1);
System.out.println(num  + num.getValue());
increment(num);
System.out.println(num  + num.getValue());
  }

  private static void increment(Numero num) {
num.inc();
  }

}

Ricardo Munhoz Santiago

--- Leonardo Souza Mario Bueno [EMAIL PROTECTED]
wrote:
 Nain, nain. Java nco tem passagem por referencia nem
 para objetos.

 Ex:

 public void inc(Integer i) {
 i = new Integer(i.intValue()++);
 System.out.println(i =  + i); // i = 2
 }

 i = new Integer(1);
 inc(i);
 System.out.println(i =  + i); // i = 1

 Resultado:

 i = 2
 i = 1

 Ao chamar inc(i) i passada uma referencia ao objeto
 i por valor.. ou seja,
 mudangas na referencia dentro do metodo nco terco
 efeito fora dele..

 []'s,

 Leonardo.

 - Original Message -
 From: Carlos E O Chierici [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Wednesday, October 03, 2001 1:35 PM
 Subject: Re: [java-list] Re: Artigo Java x C#


  A passagem de parametros em Java funciona assim:
 
  - P/ objetos: por referencia
  - P/ primitivos: por valor
 
  Veja o exemplo:
 
  public class Teste
  {
 public void run()
 {
TObj obj = new TObj();
obj .i = 3;
System.out.println(obj.i); // obj.i = 3
NovoInt(obj);
System.out.println(obj.i); // obj.i = 5
 }
 
 public void NovoInt(TObj meuObj)
 {
meuObj.i = 5;
 }
 
 public static void main(String args[])
 {
Teste t = new Teste();
 t.run();
 }
  }
 
  class TObj
  {
 public int i;
  }
 
 
  []s
 
  Carlos E O Chierici
  [EMAIL PROTECTED]
 
  - Original Message -
 
  From: [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Wednesday, October 03, 2001 9:52 AM
  Subject: RE: [java-list] Re: Artigo Java x C#
 
 
  Sirgio,
 
  Eu gostaria de fazer uma pequena corregco no seu
 email.
 
  Java nco possui passagem por referjncia. Somente
 por valor. Existe uma
 forma
  de simular passagem de parbmetros por
 referjncia, utilizando os objetos
 ou
  tipos primitivos armazenados em um array, por
 exemplo. Mas nco existe
  passagem por referjncia.
 
  Antes que o alguim dj pulinhos de alegria, eu
 pergunto: e qual i o
 problema?
  Alguim por favor, apresente um artigo
 demonstrativo, baseado em testes de
  performance ou de algum requisito que mostre qual
 i o grandismssimo
 problema
  de Java utilizar passagem por valor, e nco por
 referjncia? Mesmo que haja,
  isso significa que Java i ruim?
 
  Abragos,
  Denard
 
 
  -- LISTA SOUJAVA
 
  http://www.soujava.org.br  -  Sociedade de
 Usuarios Java da Sucesu-SP
  dzvidas mais comuns:
 http://www.soujava.org.br/faq.htm
  regras da lista:
 http://www.soujava.org.br/regras.htm
  para sair da lista: envie email para
 [EMAIL PROTECTED]
 

-
 


 -- LISTA SOUJAVA
 
 http://www.soujava.org.br  -  Sociedade de Usuarios
 Java da Sucesu-SP
 dzvidas mais comuns:
 http://www.soujava.org.br/faq.htm
 regras da lista:
 http://www.soujava.org.br/regras.htm
 para sair da lista: envie email para
 [EMAIL PROTECTED]

-



__
Do You Yahoo!?
NEW from Yahoo! GeoCities - quick and easy web site hosting, just
$8.95/month.
http://geocities.yahoo.com/ps/info1

-- LISTA SOUJAVA 
http://www.soujava.org.br  -  Sociedade de Usuarios Java da Sucesu-SP
dzvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-


-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-




Re: [java-list] Re: Artigo Java x C#

2001-10-04 Por tôpico Carlos E O Chierici

De uma olhada no seu codigo. Ele nao funciona.

Nao dah p/ fazer:

i.intValue()++

Alem disso vc esta criando um novo objeto dentro do metodo inc. Entao,
mesmo que o codigo acima funcionasse, como vc espera trabalhar no objeto
recebido como parametro se vc esta trabalhando em um novo objeto que vc
acabou de criar?

Enfim, nao serve como exemplo de passagem de parametros por referencia.

Experimente o codigo que enviei e vc vera que java passa objetos por
referencia e primitivos por valor.


[]s

Carlos E O Chierici
[EMAIL PROTECTED]


- Original Message -
From: Leonardo Souza Mario Bueno [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, October 03, 2001 5:36 PM
Subject: Re: [java-list] Re: Artigo Java x C#


Nain, nain. Java não tem passagem por referencia nem para objetos.

Ex:

public void inc(Integer i) {
i = new Integer(i.intValue()++);
System.out.println(i =  + i); // i = 2
}

i = new Integer(1);
inc(i);
System.out.println(i =  + i); // i = 1

Resultado:

i = 2
i = 1

Ao chamar inc(i) é passada uma referencia ao objeto i por valor.. ou seja,
mudanças na referencia dentro do metodo não terão efeito fora dele..

[]'s,

Leonardo.

- Original Message -
From: Carlos E O Chierici [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, October 03, 2001 1:35 PM
Subject: Re: [java-list] Re: Artigo Java x C#


 A passagem de parametros em Java funciona assim:

 - P/ objetos: por referencia
 - P/ primitivos: por valor

 Veja o exemplo:

 public class Teste
 {
public void run()
{
   TObj obj = new TObj();
   obj .i = 3;
   System.out.println(obj.i); // obj.i = 3
   NovoInt(obj);
   System.out.println(obj.i); // obj.i = 5
}

public void NovoInt(TObj meuObj)
{
   meuObj.i = 5;
}

public static void main(String args[])
{
   Teste t = new Teste();
t.run();
}
 }

 class TObj
 {
public int i;
 }


 []s

 Carlos E O Chierici
 [EMAIL PROTECTED]

 - Original Message -

 From: [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Wednesday, October 03, 2001 9:52 AM
 Subject: RE: [java-list] Re: Artigo Java x C#


 Sérgio,

 Eu gostaria de fazer uma pequena correção no seu email.

 Java não possui passagem por referência. Somente por valor. Existe uma
forma
 de simular passagem de parâmetros por referência, utilizando os objetos
ou
 tipos primitivos armazenados em um array, por exemplo. Mas não existe
 passagem por referência.

 Antes que o alguém dê pulinhos de alegria, eu pergunto: e qual é o
problema?
 Alguém por favor, apresente um artigo demonstrativo, baseado em testes de
 performance ou de algum requisito que mostre qual é o grandisíssimo
problema
 de Java utilizar passagem por valor, e não por referência? Mesmo que haja,
 isso significa que Java é ruim?

 Abraços,
 Denard


 -- LISTA SOUJAVA 
 http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
 dúvidas mais comuns: http://www.soujava.org.br/faq.htm
 regras da lista: http://www.soujava.org.br/regras.htm
 para sair da lista: envie email para [EMAIL PROTECTED]
 -



-- LISTA SOUJAVA 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-



-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-




Re: [java-list] Re: Artigo Java x C#

2001-10-04 Por tôpico Leonardo Souza Mario Bueno


- Original Message -
From: Ricardo Santiago [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Thursday, October 04, 2001 7:58 AM
Subject: Re: [java-list] Re: Artigo Java x C#



 Cara, neste caso voce esta MUDANDO a referencia que
 voce recebeu.

Exatamente!

 Voce esta criando uma NOVA referencia e tentando
 atribuir à referencia que voce recebeu como parametro.

Isso mesmo...


 Mas a passagem de objetos EH por referencia

Aqui eu descordo.. a passagem é por valor.

 (as
 referencias sao passadas por valor)

Perfeito.. note que passagem DE referencia POR valor != passagem por
referencia

[]'s,

Leonardo.


 Exemplo:

 class Numero {

   private int value;

   public Numero(int value) {
 this.value = value;
   }

   public void inc() {
 value++;
   }

   public int getValue() {
 return value;
   }

   public static void main(String [] s) {
 Numero num = new Numero(1);
 System.out.println(num  + num.getValue());
 increment(num);
 System.out.println(num  + num.getValue());
   }

   private static void increment(Numero num) {
 num.inc();
   }

 }

 Ricardo Munhoz Santiago

 --- Leonardo Souza Mario Bueno [EMAIL PROTECTED]
 wrote:
  Nain, nain. Java não tem passagem por referencia nem
  para objetos.
 
  Ex:
 
  public void inc(Integer i) {
  i = new Integer(i.intValue()++);
  System.out.println(i =  + i); // i = 2
  }
 
  i = new Integer(1);
  inc(i);
  System.out.println(i =  + i); // i = 1
 
  Resultado:
 
  i = 2
  i = 1
 
  Ao chamar inc(i) é passada uma referencia ao objeto
  i por valor.. ou seja,
  mudanças na referencia dentro do metodo não terão
  efeito fora dele..
 
  []'s,
 
  Leonardo.
 
  - Original Message -
  From: Carlos E O Chierici [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Wednesday, October 03, 2001 1:35 PM
  Subject: Re: [java-list] Re: Artigo Java x C#
 
 
   A passagem de parametros em Java funciona assim:
  
   - P/ objetos: por referencia
   - P/ primitivos: por valor
  
   Veja o exemplo:
  
   public class Teste
   {
  public void run()
  {
 TObj obj = new TObj();
 obj .i = 3;
 System.out.println(obj.i); // obj.i = 3
 NovoInt(obj);
 System.out.println(obj.i); // obj.i = 5
  }
  
  public void NovoInt(TObj meuObj)
  {
 meuObj.i = 5;
  }
  
  public static void main(String args[])
  {
 Teste t = new Teste();
  t.run();
  }
   }
  
   class TObj
   {
  public int i;
   }
  
  
   []s
  
   Carlos E O Chierici
   [EMAIL PROTECTED]
  
   - Original Message -
  
   From: [EMAIL PROTECTED]
   To: [EMAIL PROTECTED]
   Sent: Wednesday, October 03, 2001 9:52 AM
   Subject: RE: [java-list] Re: Artigo Java x C#
  
  
   Sérgio,
  
   Eu gostaria de fazer uma pequena correção no seu
  email.
  
   Java não possui passagem por referência. Somente
  por valor. Existe uma
  forma
   de simular passagem de parâmetros por
  referência, utilizando os objetos
  ou
   tipos primitivos armazenados em um array, por
  exemplo. Mas não existe
   passagem por referência.
  
   Antes que o alguém dê pulinhos de alegria, eu
  pergunto: e qual é o
  problema?
   Alguém por favor, apresente um artigo
  demonstrativo, baseado em testes de
   performance ou de algum requisito que mostre qual
  é o grandisíssimo
  problema
   de Java utilizar passagem por valor, e não por
  referência? Mesmo que haja,
   isso significa que Java é ruim?
  
   Abraços,
   Denard
  
  
   -- LISTA SOUJAVA
  
   http://www.soujava.org.br  -  Sociedade de
  Usuários Java da Sucesu-SP
   dúvidas mais comuns:
  http://www.soujava.org.br/faq.htm
   regras da lista:
  http://www.soujava.org.br/regras.htm
   para sair da lista: envie email para
  [EMAIL PROTECTED]
  
 
 -
  
 
 
  -- LISTA SOUJAVA
  
  http://www.soujava.org.br  -  Sociedade de Usuários
  Java da Sucesu-SP
  dúvidas mais comuns:
  http://www.soujava.org.br/faq.htm
  regras da lista:
  http://www.soujava.org.br/regras.htm
  para sair da lista: envie email para
  [EMAIL PROTECTED]
 
 -
 


 __
 Do You Yahoo!?
 NEW from Yahoo! GeoCities - quick and easy web site hosting, just
$8.95/month.
 http://geocities.yahoo.com/ps/info1

 -- LISTA SOUJAVA 
 http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
 dúvidas mais comuns: http://www.soujava.org.br/faq.htm
 regras da lista: http://www.soujava.org.br/regras.htm
 para sair da lista: envie email para [EMAIL PROTECTED]
 -



-- LISTA SOUJAVA

Re: [java-list] Re: Artigo Java x C#

2001-10-04 Por tôpico Renato Quedas

Po Leonardo nao pisa na bola cara.

 public void inc(Integer i) {
 i = new Integer(i.intValue()++);
se voce prestar atenção no seu codigo vai ver que você cria uma nova
instancia
de um Integer nesta linha acima, perdendo assim completamente a referencia
que você passou na chamada.

Type wrappers não são uma boa opção para demonstrar passagem por referencia
porque não permitem que você altere o valor embutido neles.
Que tal alguma coisa assim:

public class App {

  public App() {
  }

  public static void main(String[] args) {
App app1 = new App();
Inteiro inteiro = new Inteiro();
inteiro.setValor(1);
System.out.println(O valor do inteiro é: + inteiro.getValor());
inc(inteiro);
System.out.println(O valor do inteiro é: + inteiro.getValor());

  }

  public static void inc(Inteiro obj) {
 int novoValor = obj.getValor();
 novoValor = ++novoValor;
 obj.setValor(novoValor);
  }

}

class Inteiro {

  public Inteiro() {
  }

  private int valor;

  public int getValor() {
return valor;
  }
  public void setValor(int valor) {
this.valor = valor;
  }
}

Entao com isso provamos o que está escrito em qualquer livro que preste:
Objetos em java são sempre passados por referência enquanto tipos primitivos
são passados por valor.

Um abraço

Renato
- Original Message -
From: Leonardo Souza Mario Bueno [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, October 03, 2001 5:36 PM
Subject: Re: [java-list] Re: Artigo Java x C#


 Nain, nain. Java não tem passagem por referencia nem para objetos.

 Ex:

 public void inc(Integer i) {
 i = new Integer(i.intValue()++);
 System.out.println(i =  + i); // i = 2
 }

 i = new Integer(1);
 inc(i);
 System.out.println(i =  + i); // i = 1

 Resultado:

 i = 2
 i = 1

 Ao chamar inc(i) é passada uma referencia ao objeto i por valor.. ou seja,
 mudanças na referencia dentro do metodo não terão efeito fora dele..

 []'s,

 Leonardo.

 - Original Message -
 From: Carlos E O Chierici [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Wednesday, October 03, 2001 1:35 PM
 Subject: Re: [java-list] Re: Artigo Java x C#


  A passagem de parametros em Java funciona assim:
 
  - P/ objetos: por referencia
  - P/ primitivos: por valor
 
  Veja o exemplo:
 
  public class Teste
  {
 public void run()
 {
TObj obj = new TObj();
obj .i = 3;
System.out.println(obj.i); // obj.i = 3
NovoInt(obj);
System.out.println(obj.i); // obj.i = 5
 }
 
 public void NovoInt(TObj meuObj)
 {
meuObj.i = 5;
 }
 
 public static void main(String args[])
 {
Teste t = new Teste();
 t.run();
 }
  }
 
  class TObj
  {
 public int i;
  }
 
 
  []s
 
  Carlos E O Chierici
  [EMAIL PROTECTED]
 
  - Original Message -
 
  From: [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Wednesday, October 03, 2001 9:52 AM
  Subject: RE: [java-list] Re: Artigo Java x C#
 
 
  Sérgio,
 
  Eu gostaria de fazer uma pequena correção no seu email.
 
  Java não possui passagem por referência. Somente por valor. Existe uma
 forma
  de simular passagem de parâmetros por referência, utilizando os
objetos
 ou
  tipos primitivos armazenados em um array, por exemplo. Mas não existe
  passagem por referência.
 
  Antes que o alguém dê pulinhos de alegria, eu pergunto: e qual é o
 problema?
  Alguém por favor, apresente um artigo demonstrativo, baseado em testes
de
  performance ou de algum requisito que mostre qual é o grandisíssimo
 problema
  de Java utilizar passagem por valor, e não por referência? Mesmo que
haja,
  isso significa que Java é ruim?
 
  Abraços,
  Denard
 
 
  -- LISTA
SOUJAVA 
  http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
  dúvidas mais comuns: http://www.soujava.org.br/faq.htm
  regras da lista: http://www.soujava.org.br/regras.htm
  para sair da lista: envie email para
[EMAIL PROTECTED]

 -
 


 -- LISTA SOUJAVA 
 http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
 dúvidas mais comuns: http://www.soujava.org.br/faq.htm
 regras da lista: http://www.soujava.org.br/regras.htm
 para sair da lista: envie email para [EMAIL PROTECTED]
 -



-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-




RE: [java-list] Re: Artigo Java x C#

2001-10-04 Por tôpico Denard . Soares








Página 328 do livro Thinking
in Java, do Bruce Eckel:



Na seção pass by value ele discute com mais detalhes essa questão,
apesar de desde o começo do capítulo ele dar a entender que existe passagem por
referência.

Ele coloca dois pontos de
vista. 

No primeiro, ele afirma: "Java passes everything by value".

No segundo, ele diz: "Java passes primitives by value(no argument there) but objects are
passed by reference". Mais adiante, no mesmo parágrafo, ele diz: "Since ou
don´t get a local copy of the object when you pass it
into a method, objects are clearly not passed by value"



Leiam com atenção essa seção e
verão o que digo abaixo.



Se vcs lerem com bastante
atenção, ele fala de um handle. Esse handle
é o endereço para o objeto, o que ele,logo na primeira página do capítulo, também
chama de safety pointer(ponteiros seguros).

O que acontece em Java é que não
há como passar o objeto como parâmetro, e sim o
handle dele. Quando o método recebe o handle, é criada uma cópia do handle, mas
o objeto continua quietinho, não é criada uma cópia dele. Nesse momento,
existem dois handles apontando para o mesmo
objeto. Isso gera um comportamento similar à passagem por referência, porque
utilizando um ou outro, o estado do objeto vai ser alterado.



De uma vez por todas: NÃO EXISTE PASSAGEM POR REFERÊNCIA EM JAVA!

O comportamento é muito
similar, mas é por valor.



Abraços,

Denard





-Original Message-
From: Marcos Guedes [mailto:[EMAIL PROTECTED]] 
Sent: quinta-feira, 4 de outubro de 2001 08:31
To: [EMAIL PROTECTED]
Subject: Re: [java-list] Re: Artigo Java x C#



  Bem, sei que não tenho ainda
tanta experiência com

Java, mas o que aprendi no Thinking in Java de Bruce

Eckel é exatamente o que o Carlos Chierici falou:

objetos são sempre passados por referência. 

  



--- Leonardo Souza Mario Bueno [EMAIL PROTECTED]

escreveu:  Nain, nain. Java não tem passagem por

referencia nem

 para objetos.

 

 Ex:

 

 public void inc(Integer
i) {

 i = new
Integer(i.intValue()++);


System.out.println(i =  + i); // i = 2

 }

 

 i = new Integer(1);

 inc(i);


System.out.println(i =  + i); // i = 1

 

 Resultado:

 

 i = 2

 i = 1

 

 Ao chamar inc(i) é passada uma referencia ao objeto

 i por valor.. ou seja,

 mudanças na referencia dentro do metodo não terão

 efeito fora dele..

 

 []'s,

 

 Leonardo.

 

 - Original Message -

 From: Carlos E O Chierici [EMAIL PROTECTED]

 To: [EMAIL PROTECTED]

 Sent: Wednesday, October 03, 2001 1:35 PM

 Subject: Re: [java-list] Re: Artigo Java x C#

 

 

  A passagem de parametros em Java funciona assim:

 

  - P/ objetos: por referencia

  - P/ primitivos: por valor

 

  Veja o exemplo:

 

  public class Teste

  {

     public void run()

     {

    TObj obj = new
TObj();

    obj .i = 3;

   
System.out.println(obj.i); // obj.i = 3

    NovoInt(obj);

   
System.out.println(obj.i); // obj.i = 5

     }

 

     public void
NovoInt(TObj meuObj)

     {

    meuObj.i = 5;

     }

 

     public static void
main(String args[])

     {

    Teste t = new
Teste();

     t.run();

     }

  }

 

  class TObj

  {

     public int i;

  }

 

 

  []s

 

  Carlos E O Chierici

  [EMAIL PROTECTED]

 

  - Original Message -

 

  From: [EMAIL PROTECTED]

  To: [EMAIL PROTECTED]

  Sent: Wednesday, October 03, 2001 9:52 AM

  Subject: RE: [java-list] Re: Artigo Java x C#

 

 

  Sérgio,

 

  Eu gostaria de fazer uma pequena correção no seu

 email.

 

  Java não possui passagem por referência. Somente

 por valor. Existe uma

 forma

  de simular passagem de parâmetros por

 referência, utilizando os objetos

 ou

  tipos primitivos armazenados em um array, por

 exemplo. Mas não existe

  passagem por referência.

 

  Antes que o alguém dê pulinhos de alegria, eu

 pergunto: e qual é o

 problema?

  Alguém por favor, apresente um artigo

 demonstrativo, baseado em testes de

  performance ou de algum requisito que mostre qual

 é o grandisíssimo

 problema

  de Java utilizar passagem por valor, e não por

 referência? Mesmo que haja,

  isso significa que Java é ruim?

 

  Abraços,

  Denard

 

 

  -- LISTA SOUJAVA

 

  http://www.soujava.org.br 
-  Sociedade de

 Usuários Java da Sucesu-SP

  dúvidas mais comuns:

 http://www.soujava.org.br/faq.htm

  regras da lista:

 http://www.soujava.org.br/regras.htm

  para sair da lista: envie email para

 [EMAIL PROTECTED]

 



-

 

 

 

 -- LISTA SOUJAVA

  

 http://www.soujava.org.br 
-  Sociedade de Usuários

 Java da Sucesu-SP 

 dúvidas mais comuns:

 http://www.soujava.org.br/faq.htm

 regras da lista:

 http://www.soujava.org.br/regras.htm

 para sair da lista: envie

Re: [java-list] Re: Artigo Java x C#

2001-10-04 Por tôpico Sven van ´t Veer



no public final class somente quer dizer que no pode extender este classe.
Os valores podem ser alterado. 

Gabriel De Munno Francisco wrote:
[EMAIL PROTECTED]">
 Tudo bem,
  
 Mas da voc cai no caso da classe imutvel j explicado num email na lista...
O objeto Integer  "public final class Integer"
  
  Por isso, voc no pode alterar o valor, somente criando um novo objeto...
  
 Gabriel
  
  
 At 20:51 03/10/2001 -0300, Leonardo Bueno wrote:
  Acho que no.. no meu exemplo
o metod inc altera o valor da copia local de i
 ao fazer a atribuio i = new Integer(i.intValue()++); ou estou enganado?
 Novamente: em java, toda a passagem de parametros e por valor, inclusive
 quando usamos objetos como parametros... neste caso a referencia e passada
 por valor.

 []'s,

 Leonardo.
 - Original Message -
 From: "Gabriel De Munno Francisco" [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
 Cc: "Leonardo Souza Mario Bueno" [EMAIL PROTECTED]
 Sent: Wednesday, October 03, 2001 8:27 PM
 Subject: Re: [java-list] Re: Artigo Java x C#


 Leornardo,

 Voc est equivocado, no exemplo que voc deu, o mtodo no est alterando
 o objeto, est simplesmente imprimindo o resultado da chamada do mtodo
 intValue() incrementado de 1, por isso no houve mudana no valor do objeto
 durante a chamada.

 Mas em Java, quando voc passa um objeto, vc est passando uma referncia.

 Gabriel

 At 17:36 03/10/2001 -0300, Leonardo Souza Mario Bueno wrote:
 Nain, nain. Java no tem passagem por referencia nem para objetos.
 
 Ex:
 
  public void inc(Integer i) {
  i = new Integer(i.intValue()++);
  System.out.println("i = " + i); // i = 2
  }
 
  i = new Integer(1);
  inc(i);
  System.out.println("i = " + i); // i = 1
 
 Resultado:
 
 i = 2
 i = 1
 
 Ao chamar inc(i)  passada uma referencia ao objeto i por valor.. ou 
seja,
 mudanas na referencia dentro do metodo no tero efeito fora dele..
 
 []'s,
 
 Leonardo.
 
 - Original Message -
 From: "Carlos E O Chierici" [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Wednesday, October 03, 2001 1:35 PM
 Subject: Re: [java-list] Re: Artigo Java x C#
 
 
   A passagem de parametros em Java funciona assim:
  
   - P/ objetos: por referencia
   - P/ primitivos: por valor
  
   Veja o exemplo:
  
   public class Teste
   {
   public void run()
   {
   TObj obj = new  TObj();
   obj .i = 3;
   System.out.println(obj.i); // obj.i = 3
   NovoInt(obj);
   System.out.println(obj.i); // obj.i = 5
   }
  
   public void NovoInt(TObj meuObj)
   {
   meuObj.i = 5;
   }
  
   public static void main(String args[])
   {
   Teste t = new  Teste();
   t.run();
   }
   }
  
   class TObj
   {
   public int i;
   }
  
  
   []s
  
   Carlos E O Chierici
   [EMAIL PROTECTED]
  
   - Original Message -
  
   From: [EMAIL PROTECTED]
   To: [EMAIL PROTECTED]
   Sent: Wednesday, October 03, 2001 9:52 AM
   Subject: RE: [java-list] Re: Artigo Java x C#
  
  
   Srgio,
  
   Eu gostaria de fazer uma pequena correo no seu email.
  
   Java no possui passagem por referncia. Somente por valor. Existe
uma
 forma
   de "simular" passagem de parmetros por referncia, utilizando
os
 objetos
 ou
   tipos primitivos armazenados em um array, por exemplo. Mas no 
existe
   passagem por referncia.
  
   Antes que o algum d pulinhos de alegria, eu pergunto: e qual 
 o
 problema?
   Algum por favor, apresente um artigo demonstrativo, baseado em 
testes
 de
   performance ou de algum requisito que mostre qual  o grandisssimo
 problema
   de Java utilizar passagem por valor, e no por referncia? Mesmo
que
 haja,
   isso significa que Java  ruim?
  
   Abraos,
   Denard
  
  
   -- LISTA
 SOUJAVA 
   http://www.soujava.org.br
 - Sociedade de Usurios Java da Sucesu-SP
   dvidas mais comuns: 
http://www.soujava.org.br/faq.htm

   regras da lista: 
http://www.soujava.org.br/regras.htm

   para sair da lista: envie email para
 [EMAIL PROTECTED]
 
  -
  
 
 
 -- LISTA SOUJAVA 
 http://www.soujava.org.br
 - Sociedade de Usurios Java da Sucesu-SP
 dvidas mais comuns: 
http://www.soujava.org.br/faq.htm

 regras da lista: 
http://www.soujava.org.br/regras.htm

 para sair da lista: envie email para [EMAIL PROTECTED]
 -






Re: [java-list] Re: Artigo Java x C# GEA2

2001-10-04 Por tôpico Alessandro Romero

Amigos,

  O interessante aqui, é perceber que quando programamos:
String s;
s = ale;
  Isto é o mesmo que
s = new String( ale );

  É executado uma construção de uma nova String por isso o valor não é
mudado...

   Mas o int me pegou :):)

   Por que o int não muda?? Não é um tipo primitivo?
Abraços,
Alessandro.


- Original Message -
From: Ricardo Santiago [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Thursday, October 04, 2001 7:42 AM
Subject: RE: [java-list] Re: Artigo Java x C# GEA2



 Não estou querendo te chamar de louco, mas acho que
 voce deveria ter testado antes de dizer que sempre
 funcionou errado.
 Por voce mesmo nao testa?

 public class ProvaDaPassagemPorValor {

   public static void main(String [] s) {
 String s = test;
 int i = 1;
 mudeOsValores(s, i);
 System.out.println(s + i);

   }

   private static void mudeOsValores(String s, int i) {
  s = outroValor;
  i = 2;
   }

 }

 Ricardo Munhoz Santiago

 --- Wild Boar Wannabe [EMAIL PROTECTED]
 wrote:
 
   Perae !!! Eh claro que refletira as mudancas !!!
  Apos
  ser chamado o metodo mudeOsValores() o inteiro e a
  String mandados por parametro terao seus valores
  mudados !!! Ou entao eu tou louco !!! Por que sempre
  foi assim pra mim ...
 
   --- Ricardo Santiago [EMAIL PROTECTED]
  escreveu: 
   Cara, vamos deixar claro:
   Tudo em java é passado por valor.
   MAS, você só mantém REFERENCIAS para objetos (ou
   pointeiros se achar melhor).
   Logo, todo objeto é passado por referencia visto
  que
   a
   referencia é que é passada por valor!
  
   Isso não implica de forma alguma em perda de
   performance, simplesmente significa que qq
  váriavel
   que você passar como paramêtro, se for modificada
   dentro do método invocado,não refletirá as
  mudanças
   quando o método retornar
  
   Como em:
  
   String s = test;
   int i = 1;
  
   mudeOsValores(s, i);
  
   System.out.println(s + 1); // == test1
  
   Onde o metodo mudeOsValores contem o seguinte
  codigo
  
   public void mudeOsValores(String s, int i) {
 s = outracoisa;
 i = 2;
   }
  
   Ricardo Munhoz Santiago
   --- [EMAIL PROTECTED] wrote:
Sérgio,
   
Eu gostaria de fazer uma pequena correção no seu
email.
   
Java não possui passagem por referência. Somente
   por
valor. Existe uma forma
de simular passagem de parâmetros por
   referência,
utilizando os objetos ou
tipos primitivos armazenados em um array, por
exemplo. Mas não existe
passagem por referência.
   
Antes que o alguém dê pulinhos de alegria, eu
pergunto: e qual é o problema?
Alguém por favor, apresente um artigo
   demonstrativo,
baseado em testes de
performance ou de algum requisito que mostre
  qual
   é
o grandisíssimo problema
de Java utilizar passagem por valor, e não por
referência? Mesmo que haja,
isso significa que Java é ruim?
   
Abraços,
Denard
   
-Original Message-
From: Sergio Oliveira Jr.
[mailto:[EMAIL PROTECTED]]
Sent: terça-feira, 2 de outubro de 2001 22:56
To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED];
[EMAIL PROTECTED]
Subject: [java-list] Re: Artigo Java x C#
   
Mauro,
   
Não era a minha intensão te tirar do sério. Não
   vejo
problema algum em me
engajar num papo com você face-to-face. Só estou
conversando com você via
email por ser mais conveniente, afinal a
   tecnologia
está aí para facilitar a
   
nossa vida, certo?
   
Vou continuar falando racionalmente, apesar de
  não
ver nenhum problema em te
   
encontrar para um papo mais descontraído.
   
Alguns absurdos que vc escreveu:
   
- Java não possui todos os tipos derivados de
ancestral comum:
   
Possui sim... Além de possuir tipos primitivos
   mais
leves, que por sua vez
possuem suas classes equivalentes (Wrappers).
   Todas
são derivadas da class
Object.
   
- Java não possui Structs:
   
Realmente não possui a palavra Structs, mas é
ridículo simular um C Struct
com uma class ou inner class.
   
- Java não pode passar parametros por
  referencia:
   
Todos os objetos Java são passados por
  referencia.
Qualquer principiante em
Java precisa saber disso.
   
- Java não possui Propriedades:
   
Já ouviu falar em JavaBeans ??? Tb existe uma
   classe
Properties que faz isso
   
facilmente.
   
- Java categoricamente não possui eventos nem
delegate:
   
Toda a GUI do Java é orientada a eventos e a
listeners.
Java não possui ponteiros para funções, mas
  possui
interfaces que podem
facilmente e de uma forma mais elegante e
  poderosa
realizar callbacks.
   
- Java não possui Atributos:
   
Não sei o que vc quiz dizer com isso, mas Java
possui uma API de Reflection
poderosíssima.
   
- Java não possui Ponteiros:
   
Ainda bem! Referencia = Ponteiro com a excessão

Re: [java-list] Re: Artigo Java x C#

2001-10-04 Por tôpico Leonardo Souza Mario Bueno


- Original Message -
From: Carlos E O Chierici [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Thursday, October 04, 2001 10:07 AM
Subject: Re: [java-list] Re: Artigo Java x C#


 De uma olhada no seu codigo. Ele nao funciona.

 Nao dah p/ fazer:

 i.intValue()++

É mesmo.. me pegou, substitua por i.intValue()+1. Mesmo assim não vai rodar..
falta declarar main, etc. etc. etc.


 Alem disso vc esta criando um novo objeto dentro do metodo inc. Entao,
 mesmo que o codigo acima funcionasse, como vc espera trabalhar no objeto
 recebido como parametro se vc esta trabalhando em um novo objeto que vc
 acabou de criar?

Exatamente! É para mostrar que não existe passagem de parametro por
referencia!


 Enfim, nao serve como exemplo de passagem de parametros por referencia.

 Experimente o codigo que enviei e vc vera que java passa objetos por
 referencia e primitivos por valor.

Discordo.. você passa uma referencia por valor.. e isto não é o mesmo que
passagem por referencia.



 []s

 Carlos E O Chierici
 [EMAIL PROTECTED]


[]'s,

Leonardo Bueno.


 - Original Message -
 From: Leonardo Souza Mario Bueno [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Wednesday, October 03, 2001 5:36 PM
 Subject: Re: [java-list] Re: Artigo Java x C#


 Nain, nain. Java não tem passagem por referencia nem para objetos.

 Ex:

 public void inc(Integer i) {
 i = new Integer(i.intValue()++);
 System.out.println(i =  + i); // i = 2
 }

 i = new Integer(1);
 inc(i);
 System.out.println(i =  + i); // i = 1

 Resultado:

 i = 2
 i = 1

 Ao chamar inc(i) é passada uma referencia ao objeto i por valor.. ou seja,
 mudanças na referencia dentro do metodo não terão efeito fora dele..

 []'s,

 Leonardo.

 - Original Message -
 From: Carlos E O Chierici [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Wednesday, October 03, 2001 1:35 PM
 Subject: Re: [java-list] Re: Artigo Java x C#


  A passagem de parametros em Java funciona assim:
 
  - P/ objetos: por referencia
  - P/ primitivos: por valor
 
  Veja o exemplo:
 
  public class Teste
  {
 public void run()
 {
TObj obj = new TObj();
obj .i = 3;
System.out.println(obj.i); // obj.i = 3
NovoInt(obj);
System.out.println(obj.i); // obj.i = 5
 }
 
 public void NovoInt(TObj meuObj)
 {
meuObj.i = 5;
 }
 
 public static void main(String args[])
 {
Teste t = new Teste();
 t.run();
 }
  }
 
  class TObj
  {
 public int i;
  }
 
 
  []s
 
  Carlos E O Chierici
  [EMAIL PROTECTED]
 
  - Original Message -
 
  From: [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Wednesday, October 03, 2001 9:52 AM
  Subject: RE: [java-list] Re: Artigo Java x C#
 
 
  Sérgio,
 
  Eu gostaria de fazer uma pequena correção no seu email.
 
  Java não possui passagem por referência. Somente por valor. Existe uma
 forma
  de simular passagem de parâmetros por referência, utilizando os objetos
 ou
  tipos primitivos armazenados em um array, por exemplo. Mas não existe
  passagem por referência.
 
  Antes que o alguém dê pulinhos de alegria, eu pergunto: e qual é o
 problema?
  Alguém por favor, apresente um artigo demonstrativo, baseado em testes de
  performance ou de algum requisito que mostre qual é o grandisíssimo
 problema
  de Java utilizar passagem por valor, e não por referência? Mesmo que
haja,
  isso significa que Java é ruim?
 
  Abraços,
  Denard
 
 
  -- LISTA SOUJAVA 
  http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
  dúvidas mais comuns: http://www.soujava.org.br/faq.htm
  regras da lista: http://www.soujava.org.br/regras.htm
  para sair da lista: envie email para [EMAIL PROTECTED]
  -
 


 -- LISTA SOUJAVA 
 http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
 dúvidas mais comuns: http://www.soujava.org.br/faq.htm
 regras da lista: http://www.soujava.org.br/regras.htm
 para sair da lista: envie email para [EMAIL PROTECTED]
 -



 -- LISTA SOUJAVA 
 http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
 dúvidas mais comuns: http://www.soujava.org.br/faq.htm
 regras da lista: http://www.soujava.org.br/regras.htm
 para sair da lista: envie email para [EMAIL PROTECTED]
 -



-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-




Re: [java-list] Re: Artigo Java x C#

2001-10-04 Por tôpico Leonardo Souza Mario Bueno


- Original Message -
From: Renato Quedas [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Thursday, October 04, 2001 10:29 AM
Subject: Re: [java-list] Re: Artigo Java x C#


 Po Leonardo nao pisa na bola cara.

  public void inc(Integer i) {
  i = new Integer(i.intValue()++);
 se voce prestar atenção no seu codigo vai ver que você cria uma nova
 instancia
 de um Integer nesta linha acima, perdendo assim completamente a referencia
 que você passou na chamada.

Pessoal interessado nesta discussão, (Já devem ser poucos.. tá ficando pior
do que a discussão sobre overloading/polimorfismo :)

Eu sei que estou criando outo objeto.. o único erro que há nesta linha é que
i.intValue()++ não compila porque é equivalente à i.intValue() = i.intValue()
+ 1 que não é válido. Eu estou atribuindo uma nova instancia a i para mostrar
que o parametro é passado por valor.. se não fosse a alteração teria efeito
além do escopo do metodo.


 Type wrappers não são uma boa opção para demonstrar passagem por referencia
 porque não permitem que você altere o valor embutido neles.

A passagem de parametros segue a mesma regra para qualquer objeto ou tipo em
java.. sempre por valor.

 Que tal alguma coisa assim:

 public class App {

   public App() {
   }

   public static void main(String[] args) {
 App app1 = new App();
 Inteiro inteiro = new Inteiro();
 inteiro.setValor(1);
 System.out.println(O valor do inteiro é: + inteiro.getValor());
 inc(inteiro);
 System.out.println(O valor do inteiro é: + inteiro.getValor());

   }

   public static void inc(Inteiro obj) {
  int novoValor = obj.getValor();
  novoValor = ++novoValor;
  obj.setValor(novoValor);
   }

 }

 class Inteiro {

   public Inteiro() {
   }

   private int valor;

   public int getValor() {
 return valor;
   }
   public void setValor(int valor) {
 this.valor = valor;
   }
 }

 Entao com isso provamos o que está escrito em qualquer livro que preste:
 Objetos em java são sempre passados por referência enquanto tipos
primitivos
 são passados por valor.

Como um outro participante da lista já informou, o livro de estudos para
certificação Java 2 fala expliciramente que toda passagem de parametros em
java é por valor. Este exemplo não serve para provar que objetos são passados
por referencia (Mesmo porque é impossível provar isto ;-) pois você não
recebe um objeto como parametro e altera o valor dele.


 Um abraço

 Renato

Bom, já mostrei meus argumentos em vários posts e acho que não tem sentido
mais ficar repetindo-os.. vamos mudar pra uma discussão mais legal tipo Qual
é melhor JBuilder ou Forte, Vale a pena certificação (Acho que vale.. você
aprende que PDP é por valor ;-) ou então Method overloading é
polimorfismo?.

[]'s,

Leonardo.

 - Original Message -
 From: Leonardo Souza Mario Bueno [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Wednesday, October 03, 2001 5:36 PM
 Subject: Re: [java-list] Re: Artigo Java x C#


  Nain, nain. Java não tem passagem por referencia nem para objetos.
 
  Ex:
 
  public void inc(Integer i) {
  i = new Integer(i.intValue()++);
  System.out.println(i =  + i); // i = 2
  }
 
  i = new Integer(1);
  inc(i);
  System.out.println(i =  + i); // i = 1
 
  Resultado:
 
  i = 2
  i = 1
 
  Ao chamar inc(i) é passada uma referencia ao objeto i por valor.. ou
seja,
  mudanças na referencia dentro do metodo não terão efeito fora dele..
 
  []'s,
 
  Leonardo.
 
  - Original Message -
  From: Carlos E O Chierici [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Wednesday, October 03, 2001 1:35 PM
  Subject: Re: [java-list] Re: Artigo Java x C#
 
 
   A passagem de parametros em Java funciona assim:
  
   - P/ objetos: por referencia
   - P/ primitivos: por valor
  
   Veja o exemplo:
  
   public class Teste
   {
  public void run()
  {
 TObj obj = new TObj();
 obj .i = 3;
 System.out.println(obj.i); // obj.i = 3
 NovoInt(obj);
 System.out.println(obj.i); // obj.i = 5
  }
  
  public void NovoInt(TObj meuObj)
  {
 meuObj.i = 5;
  }
  
  public static void main(String args[])
  {
 Teste t = new Teste();
  t.run();
  }
   }
  
   class TObj
   {
  public int i;
   }
  
  
   []s
  
   Carlos E O Chierici
   [EMAIL PROTECTED]
  
   - Original Message -
  
   From: [EMAIL PROTECTED]
   To: [EMAIL PROTECTED]
   Sent: Wednesday, October 03, 2001 9:52 AM
   Subject: RE: [java-list] Re: Artigo Java x C#
  
  
   Sérgio,
  
   Eu gostaria de fazer uma pequena correção no seu email.
  
   Java não possui passagem por referência. Somente por valor. Existe uma
  forma
   de simular passagem de parâmetros por referência, utilizando os
 objetos
  ou
   tipos primitivos armazenados em um array, por exemplo. Mas não existe
   passagem por referência.
  
   Antes que o alguém dê pulinhos de alegria, eu pergunto: e qual é o
  problema

RE: [java-list] Re: Artigo Java x C# GEA2 DE UMA OLHADA AGORA

2001-10-04 Por tôpico Wild Boar Wannabe


 Eh o seguinte , realmente achei que tava louco , mas
entao fiz um outro exemplo pra tu dares uma olhada ...
neste caso eu procuro nao fazer as coisas dentro do
metodo main() ... fiz uma filha de JApplet mas tu
podes rodar com o comamdo java EEste , nao precisa
do appletviewer ...
 O que importa eh que tu repares como temos um
Quadradinho (um objeto de uma classe qualquer) que eh
mandado por parametro tendo um dado inteiro coordx
igual a 1 , e apos executado o metodo mudeOsValores()
este valor eh alterado para 0 ... e entao , me explica
esta passagem por valor !!! ...
 Cara , eu fiquei abismado quando testei o que tu
mandaste e realmente funcionou como tu diceste , mas
daih eu pensei que tivesse a ver com o metodo main ,
que eh statico , e coloquei no init() (por isso fiz
uma filha de JAPplet) , mas deu na mesma para o
inteiro e a String , interessante como um inteiro e um
objeto do tipo String se comportam diferente de todos
os objetos que jah criei ateh hoje (como o Quadradinho
por exemplo) ...

import javax.swing.*;
import java.awt.*;

public class EEste extends JApplet{

Quadradinho q;

public void init(){
  q=new Quadradinho(new Rectangle(),1,1,1);
  System.out.println(q.coordx= +q.coordx);
  mudeOsValores(q);
  System.out.println(q.coordx= +q.coordx);
}

void mudeOsValores(Quadradinho q) {
q.coordx=0;
}

public static void main(String args[]){
EEste ee=new EEste();
ee.init();  
ee.start();
}
}

/*tu vais precisar da classe Quadradinho tambem , mas
eh soh pra funcionar mesmo , trata-se de uma classe
que eu tinha aqui a mao pra exemplo*/

import java.awt.*;

public class Quadradinho{

public Rectangle r;
public int coordx,coordy,redesup,redeinf,index;

public Quadradinho(Rectangle re,int x,int y,int
i){
redesup=0;
redeinf=0;
r=re;
coordx=x;
coordy=y;
index=i;
   }
}

 --- Ricardo Santiago [EMAIL PROTECTED]
escreveu:  
 Não estou querendo te chamar de louco, mas acho que
 voce deveria ter testado antes de dizer que sempre
 funcionou errado.
 Por voce mesmo nao testa?
 
 public class ProvaDaPassagemPorValor {
 
   public static void main(String [] s) {
 String s = test;
 int i = 1;
 mudeOsValores(s, i);
 System.out.println(s + i);
 
   }
 
   private static void mudeOsValores(String s, int i)
 {
  s = outroValor;
  i = 2;
   }
 
 }
 
 Ricardo Munhoz Santiago
 
 --- Wild Boar Wannabe [EMAIL PROTECTED]
 wrote:
  
   Perae !!! Eh claro que refletira as mudancas !!!
  Apos
  ser chamado o metodo mudeOsValores() o inteiro e a
  String mandados por parametro terao seus valores
  mudados !!! Ou entao eu tou louco !!! Por que
 sempre
  foi assim pra mim ...
  
   --- Ricardo Santiago [EMAIL PROTECTED]
  escreveu:  
   Cara, vamos deixar claro:
   Tudo em java é passado por valor.
   MAS, você só mantém REFERENCIAS para objetos (ou
   pointeiros se achar melhor).
   Logo, todo objeto é passado por referencia visto
  que
   a
   referencia é que é passada por valor!
   
   Isso não implica de forma alguma em perda de
   performance, simplesmente significa que qq
  váriavel
   que você passar como paramêtro, se for
 modificada
   dentro do método invocado,não refletirá as
  mudanças
   quando o método retornar
   
   Como em:
   
   String s = test;
   int i = 1;
   
   mudeOsValores(s, i);
   
   System.out.println(s + 1); // == test1
   
   Onde o metodo mudeOsValores contem o seguinte
  codigo
   
   public void mudeOsValores(String s, int i) {
 s = outracoisa;
 i = 2;
   }
   
   Ricardo Munhoz Santiago
   --- [EMAIL PROTECTED] wrote:
Sérgio,

Eu gostaria de fazer uma pequena correção no
 seu
email.

Java não possui passagem por referência.
 Somente
   por
valor. Existe uma forma
de simular passagem de parâmetros por
   referência,
utilizando os objetos ou
tipos primitivos armazenados em um array, por
exemplo. Mas não existe
passagem por referência.

Antes que o alguém dê pulinhos de alegria, eu
pergunto: e qual é o problema?
Alguém por favor, apresente um artigo
   demonstrativo,
baseado em testes de
performance ou de algum requisito que mostre
  qual
   é
o grandisíssimo problema
de Java utilizar passagem por valor, e não por
referência? Mesmo que haja,
isso significa que Java é ruim?

Abraços,
Denard

-Original Message-
From: Sergio Oliveira Jr.
[mailto:[EMAIL PROTECTED]] 
Sent: terça-feira, 2 de outubro de 2001 22:56
To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED];
[EMAIL PROTECTED]
Subject: [java-list] Re: Artigo Java x C#

Mauro,

Não era a minha intensão te tirar do sério.
 Não
   vejo
problema algum em me 
engajar num papo com você face

RE: [java-list] Re: Artigo Java x C# - CONCLUSAO FINAL

2001-10-04 Por tôpico Sergio Oliveira Jr.


Realmente Java faz uma cópia da referencia antes de passá-la para a função, 
mas estou curioso para saber qual é a diferença que isso faz na prática?

Posso estar errado, mas acho que toda essa confusão veio da diferença que em 
C++ Strings são mutáveis e em Java não são.

O ponto é: Não dá para alterar a cópia da referência que ficou fora da 
função de dentro da função.

Em C++ vc pode fazer isso MESMO PARA OBJETOS IMUTÁVEIS:

altereIsso(a, b, c);

Em Java não dá para fazer isso para OBJETOS IMUTÁVEIS:

altereIsso(a, b, c); // Não dá se for imutável.

Se for imutável em Java vc terá que fazer:

a = altereIsso(a);
b = altereIsso(b);
c = altereIsso(c);

NA MINHA CABEÇA ISSO É MAIS UMA DIFERENÇA NA SINTAXE DA LINGUAGEM DO QUE UMA 
VANTAGEM. Mas pode ser que alguém apresente algum caso em que isso seria 
realmente uma vantagem de C++/C#.

---
Sergio Oliveira Jr.
Sun Certified Java Programmer
Desenvolvedor e Consultor Java
Empresa SmartJava
WWW.SMARTJAVA.COM.BR
Dê ao homem um peixe e alimente-o
por um dia. Ensine-o a pescar e
alimente-o por uma vida.
---



From: Luiz Fernando Bicalho [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: RE: [java-list] Re: Artigo Java x C#
Date: Thu, 4 Oct 2001 10:06:10 -0300

entao o cara esta certo, e passagem por valor



-Original Message-
From: Ricardo Santiago [mailto:[EMAIL PROTECTED]]
Sent: quinta-feira, 4 de outubro de 2001 07:58
To: [EMAIL PROTECTED]
Subject: Re: [java-list] Re: Artigo Java x C#



Cara, neste caso voce esta MUDANDO a referencia que
voce recebeu.
Voce esta criando uma NOVA referencia e tentando
atribuir ` referencia que voce recebeu como parametro.

Mas a passagem de objetos EH por referencia (as
referencias sao passadas por valor)

Exemplo:

class Numero {

   private int value;

   public Numero(int value) {
 this.value = value;
   }

   public void inc() {
 value++;
   }

   public int getValue() {
 return value;
   }

   public static void main(String [] s) {
 Numero num = new Numero(1);
 System.out.println(num  + num.getValue());
 increment(num);
 System.out.println(num  + num.getValue());
   }

   private static void increment(Numero num) {
 num.inc();
   }

}

Ricardo Munhoz Santiago

--- Leonardo Souza Mario Bueno [EMAIL PROTECTED]
wrote:
  Nain, nain. Java nco tem passagem por referencia nem
  para objetos.
 
  Ex:
 
  public void inc(Integer i) {
  i = new Integer(i.intValue()++);
  System.out.println(i =  + i); // i = 2
  }
 
  i = new Integer(1);
  inc(i);
  System.out.println(i =  + i); // i = 1
 
  Resultado:
 
  i = 2
  i = 1
 
  Ao chamar inc(i) i passada uma referencia ao objeto
  i por valor.. ou seja,
  mudangas na referencia dentro do metodo nco terco
  efeito fora dele..
 
  []'s,
 
  Leonardo.
 
  - Original Message -
  From: Carlos E O Chierici [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Wednesday, October 03, 2001 1:35 PM
  Subject: Re: [java-list] Re: Artigo Java x C#
 
 
   A passagem de parametros em Java funciona assim:
  
   - P/ objetos: por referencia
   - P/ primitivos: por valor
  
   Veja o exemplo:
  
   public class Teste
   {
  public void run()
  {
 TObj obj = new TObj();
 obj .i = 3;
 System.out.println(obj.i); // obj.i = 3
 NovoInt(obj);
 System.out.println(obj.i); // obj.i = 5
  }
  
  public void NovoInt(TObj meuObj)
  {
 meuObj.i = 5;
  }
  
  public static void main(String args[])
  {
 Teste t = new Teste();
  t.run();
  }
   }
  
   class TObj
   {
  public int i;
   }
  
  
   []s
  
   Carlos E O Chierici
   [EMAIL PROTECTED]
  
   - Original Message -
  
   From: [EMAIL PROTECTED]
   To: [EMAIL PROTECTED]
   Sent: Wednesday, October 03, 2001 9:52 AM
   Subject: RE: [java-list] Re: Artigo Java x C#
  
  
   Sirgio,
  
   Eu gostaria de fazer uma pequena corregco no seu
  email.
  
   Java nco possui passagem por referjncia. Somente
  por valor. Existe uma
  forma
   de simular passagem de parbmetros por
  referjncia, utilizando os objetos
  ou
   tipos primitivos armazenados em um array, por
  exemplo. Mas nco existe
   passagem por referjncia.
  
   Antes que o alguim dj pulinhos de alegria, eu
  pergunto: e qual i o
  problema?
   Alguim por favor, apresente um artigo
  demonstrativo, baseado em testes de
   performance ou de algum requisito que mostre qual
  i o grandismssimo
  problema
   de Java utilizar passagem por valor, e nco por
  referjncia? Mesmo que haja,
   isso significa que Java i ruim?
  
   Abragos,
   Denard
  
  
   -- LISTA SOUJAVA
  
   http://www.soujava.org.br  -  Sociedade de
  Usuarios Java da Sucesu-SP
   dzvidas mais comuns:
  http://www.soujava.org.br/faq.htm
   regras da lista:
  http://www.soujava.org.br/regras.htm
   para sair da

Re: [java-list] Re: Artigo Java x C#

2001-10-03 Por tôpico Carlos A Vitagliano

Senhores,

Isto aqui está parecendo o Afeganistão e o Paquistão, pois falam a mesma
lingua e ninguem se entende.

Esta discussão não leva a nada pois parece briga em balcão de botequim
domingo a tarde depois do clássico Coringão x Palestra. Resolve discutir se
foi falta ou não, se o juiz roubou, se o ponta de lança estava em off-side
na hora do gol ? A mesma coisa acontece aqui, não importa se Java é melhor
que C#, ou vice-versa, importa sim é que que queira usar que use. Nesses
meus 20 anos de informática vi ótimos aplicativos feitos em linguagem macro
do Excel e verdadeiras porcarias feitas em C e Java, mas isto não se deve a
linguagem ou tecnologia e sim a capacidade de quem está
escrevendo/desenvolvendo.

Pessoal, não importa se você gosta mais do C# que do Java, ou que você
prefere o Java ao Visual Basic, o que importa é que este fórum foi criado
para troca de informações e não de agressões.

Caro moderador, outro dia solicitei que usasse de seu poder e não permitisse
esse tipo de coisa, mas pelo visto você gosta de ver um bom barraco. Só que
isso não contribui em nada, pelo contrário só aumenta o tráfego de mensagens
inúteis e inimizades.

A idéia original de um Fórum é a discussão, mas a sadia, é a troca de
informação e não palavrão.

Desculpe 


Carlos A Vitagliano
[EMAIL PROTECTED]



- Original Message -
From: Sergio Oliveira Jr.
To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED] ; [EMAIL PROTECTED]
Sent: Tuesday, October 02, 2001 11:38 PM
Subject: [java-list] Re: Artigo Java x C#


Caro Mauro,

O que eu posso te falar é que tenho 6 anos de experiência com a tecnologia
Java, passagem por uma multinacional de consultoria e diversos projetos Java
nas costas. Também sou certificado pela Sun desde 1998.

Logo acho que vc deveria acreditar em mim quando o assunto é Java. Já quando
o assunto é C# e .Net eu recolho a minha inexperiência e te escuto.

Acredito que .Net seja uma tecnologia interessante para plataformas 100%
microsoft, e estou disposto a investigar o CD-ROM do Visual Studio .Net Beta
que eu recebi outro dia. Só achei engraçado o que a Microsoft colocou no
site dela (www.microsoft.com/java):

JUMP to .NET - Java User Migration Path to Microsoft .NET

Aí já é forçassão de barra !!! :-)

Acredito tb que a estratégia da Microsoft de degradar a imagem do Java para
lançar o seu produto concorrente não é a mais indicada para conquistar os
milhões de profissionais Java espalhados pelo mundo. Vale lembrar que não
estamos mais falando de simples browsers e sim de uma plataforma madura que
está dentro de muitas empresas sérias e por trás de grandes negócios. Isso
não vai ser mudado de uma hora para outra.

A melhor situação para o mercado de TI é a convivência pacífica entre essas
duas tecnologias. Concorrência gera melhorias nos serviços e produtos. Vai
ser melhor para todo mundo, principalmente para nós profissionais de TI que
vamos ter mais uma opção de tecnologia para plataformas Microsoft.

Vou ficar aguardando ansiosamente o seu novo artigo e espero que ele seja
mais realista quando retratar as diferenças entre C# e Java. Só assim eu me
sentirei seguro em utilizar .Net como uma alternativa conciente, e não
apenas por que a Microsoft deseja no seu ego passar por cima da Sun
Microsystems.

--
Sergio Oliveira Jr.
Sun Certified Java Programmer
Desenvolvedor e Consultor Java
Empresa SmartJava
--



From: Mauro Sant'Anna [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: Re: Artigo Java x C#
Date: Wed, 03 Oct 2001 02:07:13 +

Caro Sergio,

Devido a duvidas como as suas, estou escrevendo outro artigo que deverá
aparecer nos próximos dias no site da Microsoft. Ele explica alguns dos
tópicos que deram origem a mais dúvidas. Já te adianto: seus pontos serão
respondidos, se você estiver disposto a ouvir.

No entanto, vendo a sua lista de absurdos tenho minhas dúvidas se
adiantará alguma coisa. As coisas que você elencou são simplesmente
erradas. Algumas me parecem confusões honestas, mas a maioria dá a
impressão que você simplesmente não quer entender.

Aguarde o artigo.

Mauro


From: Sergio Oliveira Jr. [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
CC: [EMAIL PROTECTED], [EMAIL PROTECTED]
Subject: Re: Artigo Java x C#
Date: Wed, 03 Oct 2001 01:55:39 +

Mauro,

Não era a minha intensão te tirar do sério. Não vejo problema algum em me
engajar num papo com você face-to-face. Só estou conversando com você via
email por ser mais conveniente, afinal a tecnologia está aí para facilitar
a nossa vida, certo?

Vou continuar falando racionalmente, apesar de não ver nenhum problema em
te encontrar para um papo mais descontraído.

Alguns absurdos que vc escreveu:

- Java não possui todos os tipos derivados de ancestral comum:

Possui sim... Além de possuir tipos primitivos mais leves, que por sua vez
possuem suas classes equivalentes (Wrappers). Todas são derivadas da class
Object.

- Java não possui Structs:

Realmente não possui a palavra Structs, mas

Re: [java-list] Re: Artigo Java x C#

2001-10-03 Por tôpico Sven van ´t Veer

Hear Hear Sergio !

Acho que até existe opção 3:
Microsoft paga para este artigo?.. Não se fala mal de quem paga as contas.

Mas sério fora que o artigo é malescrito se basea em coisas que não são 
verdade.

Sven

Sergio Oliveira Jr. wrote:

 Mauro,

 Eu te dei duas opções:

 1) Vc está mentindo
 2) Vc não sabe nada sobre Java

 Se vc optou pela alternativa 1), não há nada que eu possa fazer.

 Só quiz humildemente alertá-lo que comprar uma briga sem estar numa 
 posição neutra e sem possuir informações corretas pode ser perigoso 
 para a sua imagem profissional.

 Possuo 6 anos de experiência com a tecnologia Java e posso lhe afirmar 
 que o seu artigo possui diversas afirmações incorretas, bizarras e 
 suspeitas sobre a tecnologia java.

 --
 Sergio Oliveira Jr.
 Sun Certified Java Programmer
 Desenvolvedor e Consultor Java
 --



 From: Mauro Sant'Anna [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Subject: Re: Artigo Java x C#
 Date: Wed, 03 Oct 2001 00:24:44 +

 Caro senhor,

 O meu e-mail está disponível para críticas construtivas e 
 esclarecimento de dúvidas, não para ofensas.

 Mente o senhor ao iniciar a mensagem com Com todo o respeito e a 
 seguir me chamar de mentiroso.

 Sem mais,

 Mauro

 From: Sergio Oliveira Jr. [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 CC: [EMAIL PROTECTED], [EMAIL PROTECTED]
 Subject: Artigo Java x C#
 Date: Wed, 03 Oct 2001 00:19:20 +


 Caro Mauro Sant'Anna,

 Com todo o respeito gostaria de lhe informar que o seu artigo sobre 
 Java x C# possui diversos erros grotescos em relação a tecnologia 
 Java. Isso demonstra que ou vc está mentindo para promover a 
 tecnologia C# ou vc não sabe absolutamente nada sobre a tecnologia 
 Java e nunca deveria ter escrito um artigo como esse.

 Eu não tenho nenhuma experiência com a tecnologia .Net, apenas sei 
 que ela é a alternativa da Microsoft para o sucesso da linguagem 
 Java no mercado. Portanto me limito a ficar calado quando o assunto 
 é comparar C# com Java. Vc definitivamente deveria fazer o mesmo 
 para não passar vergonha.

 --
 Sergio Oliveira Jr.
 Sun Certified Java Programmer
 Desenvolvedor e Consultor Java
 --




 _
 Get your FREE download of MSN Explorer at 
 http://explorer.msn.com/intl.asp


 -- LISTA SOUJAVA 
  http://www.soujava.org.br  -  Sociedade 
 de Usuários Java da Sucesu-SP dúvidas mais comuns: 
 http://www.soujava.org.br/faq.htm
 regras da lista: http://www.soujava.org.br/regras.htm
 para sair da lista: envie email para 
 [EMAIL PROTECTED] 
 -




-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-




RE: [java-list] Re: Artigo Java x C#

2001-10-03 Por tôpico Denard . Soares
Title: RE: [java-list] Re: Artigo Java x C#





Sérgio,


Eu gostaria de fazer uma pequena correção no seu email.


Java não possui passagem por referência. Somente por valor. Existe uma forma de simular passagem de parâmetros por referência, utilizando os objetos ou tipos primitivos armazenados em um array, por exemplo. Mas não existe passagem por referência.

Antes que o alguém dê pulinhos de alegria, eu pergunto: e qual é o problema? Alguém por favor, apresente um artigo demonstrativo, baseado em testes de performance ou de algum requisito que mostre qual é o grandisíssimo problema de Java utilizar passagem por valor, e não por referência? Mesmo que haja, isso significa que Java é ruim?

Abraços,
Denard


-Original Message-
From: Sergio Oliveira Jr. [mailto:[EMAIL PROTECTED]] 
Sent: terça-feira, 2 de outubro de 2001 22:56
To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED]
Subject: [java-list] Re: Artigo Java x C#


Mauro,


Não era a minha intensão te tirar do sério. Não vejo problema algum em me 
engajar num papo com você face-to-face. Só estou conversando com você via 
email por ser mais conveniente, afinal a tecnologia está aí para facilitar a 
nossa vida, certo?


Vou continuar falando racionalmente, apesar de não ver nenhum problema em te 
encontrar para um papo mais descontraído.


Alguns absurdos que vc escreveu:


- Java não possui todos os tipos derivados de ancestral comum:


Possui sim... Além de possuir tipos primitivos mais leves, que por sua vez 
possuem suas classes equivalentes (Wrappers). Todas são derivadas da class 
Object.


- Java não possui Structs:


Realmente não possui a palavra Structs, mas é ridículo simular um C Struct 
com uma class ou inner class.


- Java não pode passar parametros por referencia:


Todos os objetos Java são passados por referencia. Qualquer principiante em 
Java precisa saber disso.


- Java não possui Propriedades:


Já ouviu falar em JavaBeans ??? Tb existe uma classe Properties que faz isso 
facilmente.


- Java categoricamente não possui eventos nem delegate:


Toda a GUI do Java é orientada a eventos e a listeners.
Java não possui ponteiros para funções, mas possui interfaces que podem 
facilmente e de uma forma mais elegante e poderosa realizar callbacks.


- Java não possui Atributos:


Não sei o que vc quiz dizer com isso, mas Java possui uma API de Reflection 
poderosíssima.


- Java não possui Ponteiros:


Ainda bem! Referencia = Ponteiro com a excessão que não podemos fazer 
operações aritiméticas com referencias.
Todo mundo sabe que os ponteiros sempre foram a maior fonte de bugs, falhas 
de segurança, vírus e dores de cabeça para os programadores C.


- Java não possui Forech: loop para varrer arrays e coleções


Dê uma olhada na API Collections. Vc vai ficar impressionado com a 
qualidade, eficiência e performance dessa API.


- Java não possui Campos readonly.


Lógico que possui. Basta utilizar final.


- Java não possui Documentação integrada em XML.


Javadoc serve exatamente para isso que vc sugere como vantagem do C#.


- Java não possui Controle sobre "estouro de faixa" numérica


Lógico que possui. Pelo amor de Deus...


- Java não possui Diretivas de compilação condicional (#ifdef etc)


Não precisa pois utilizando o final boolean DEBUG = false; o compilador 
automaticamente otimiza o código compilado retirando esse código morto.


- Java não possui Padronização por algum organismo internacional


??? Já ouviu falar em Enterprise JavaBeans, Servlet, JSP, etc. Diversas 
empresas adotaram essas especificações, independentemente de imposições da 
Sun. Apenas a Máquina Virtual da microsoft não era compatível com todas as 
demais, daí a derrota da Microsoft na justiça.


- Java não Chama APIs do Windows e DLLs


Lógico que chama via JNI.


Como voce percebe pelos meus comentários acima. Vc definitivamente não é a 
pessoa certa para fazer essa comparação entre C# e Java. A não ser que vc 
seja um homem de marketing e não da área de TI.


--
Sergio Oliveira Jr.
Sun Certified Java Programmer
Desenvolvedor e Consultor Java
Empresa SmartJava
--




From: Mauro Sant'Anna [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: Re: Artigo Java x C#
Date: Wed, 03 Oct 2001 00:41:36 +

Se você quizesse alertar-me, teria fornecido exemplos concretos e fatos 
ao invés de me chamar de ignorante/mentiroso.

É incrível como as pessoas ficam valentes na frente de um teclado. 
Imagine se você teria a coragem de me dizer cara a cara o que você me 
escreveu, depois de uma comparação C# X Java em um eventual seminário da 
Microsoft - mais ou menos ou equivalente a um artigo no site da Microsoft.

Mauro

From: Sergio Oliveira Jr. [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
CC: [EMAIL PROTECTED], [EMAIL PROTECTED]
Subject: Re: Artigo Java x C#
Date: Wed, 03 Oct 2001 00:35:27 +

Mauro,

Eu te dei duas opções:

1) Vc está mentindo
2) Vc não sabe nada sobre Java

Se vc 

[java-list] Re: Artigo Java x C#

2001-10-03 Por tôpico Sergio Oliveira Jr.

From: Mauro Sant'Anna [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: Re: Artigo Java x C#
Date: Wed, 03 Oct 2001 02:47:13 +

Caro Sergio,

Está ficando tarde e este artigo que eu te falei já está 70% escrito e sai 
em alguns dias. Não pretendo reescrevê-lo aqui. Continuo a reafirmar que 
meu artigo está integralmente correto.

Não duvido dos seus conhecimentos de Java, mas questiono seriamente seus 
conhecimentos de C# para me criticar da forma que você o fez e sua 
disposição em conhecer coisas novas.

Sem entrar em nenhum méritos técnicos, veja só o seguinte: O C# foi feito 
DEPOIS do Java e PELA MESMA EQUIPE que fez o J++ e o Delphi! Os caras 
sabiam onde os esqueletos estavam enterrados. E tem mais: tinham BILHÕES de 
dólares (literalmente) para gastar. Você realmente acha que eles fizeram 
algo PIOR?

Se você quiser ter alguma resposta técnica imediatamente, leia os textos da 
Sun e da Microsoft sobre eventos em links no final do meu artigo.

Mauro


From: Sergio Oliveira Jr. [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
CC: [EMAIL PROTECTED], [EMAIL PROTECTED]
Subject: Re: Artigo Java x C#
Date: Wed, 03 Oct 2001 02:38:49 +

Caro Mauro,

O que eu posso te falar é que tenho 6 anos de experiência com a tecnologia 
Java, passagem por uma multinacional de consultoria e diversos projetos 
Java nas costas. Também sou certificado pela Sun desde 1998.

Logo acho que vc deveria acreditar em mim quando o assunto é Java. Já 
quando o assunto é C# e .Net eu recolho a minha inexperiência e te escuto.

Acredito que .Net seja uma tecnologia interessante para plataformas 100% 
microsoft, e estou disposto a investigar o CD-ROM do Visual Studio .Net 
Beta que eu recebi outro dia. Só achei engraçado o que a Microsoft colocou 
no site dela (www.microsoft.com/java):

JUMP to .NET - Java User Migration Path to Microsoft .NET

Aí já é forçassão de barra !!! :-)

Acredito tb que a estratégia da Microsoft de degradar a imagem do Java 
para lançar o seu produto concorrente não é a mais indicada para 
conquistar os milhões de profissionais Java espalhados pelo mundo. Vale 
lembrar que não estamos mais falando de simples browsers e sim de uma 
plataforma madura que está dentro de muitas empresas sérias e por trás de 
grandes negócios. Isso não vai ser mudado de uma hora para outra.

A melhor situação para o mercado de TI é a convivência pacífica entre 
essas duas tecnologias. Concorrência gera melhorias nos serviços e 
produtos. Vai ser melhor para todo mundo, principalmente para nós 
profissionais de TI que vamos ter mais uma opção de tecnologia para 
plataformas Microsoft.

Vou ficar aguardando ansiosamente o seu novo artigo e espero que ele seja 
mais realista quando retratar as diferenças entre C# e Java. Só assim eu 
me sentirei seguro em utilizar .Net como uma alternativa conciente, e não 
apenas por que a Microsoft deseja no seu ego passar por cima da Sun 
Microsystems.

--
Sergio Oliveira Jr.
Sun Certified Java Programmer
Desenvolvedor e Consultor Java
Empresa SmartJava
--



From: Mauro Sant'Anna [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: Re: Artigo Java x C#
Date: Wed, 03 Oct 2001 02:07:13 +

Caro Sergio,

Devido a duvidas como as suas, estou escrevendo outro artigo que deverá 
aparecer nos próximos dias no site da Microsoft. Ele explica alguns dos 
tópicos que deram origem a mais dúvidas. Já te adianto: seus pontos serão 
respondidos, se você estiver disposto a ouvir.

No entanto, vendo a sua lista de absurdos tenho minhas dúvidas se 
adiantará alguma coisa. As coisas que você elencou são simplesmente 
erradas. Algumas me parecem confusões honestas, mas a maioria dá a 
impressão que você simplesmente não quer entender.

Aguarde o artigo.

Mauro


From: Sergio Oliveira Jr. [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
CC: [EMAIL PROTECTED], [EMAIL PROTECTED]
Subject: Re: Artigo Java x C#
Date: Wed, 03 Oct 2001 01:55:39 +

Mauro,

Não era a minha intensão te tirar do sério. Não vejo problema algum em 
me engajar num papo com você face-to-face. Só estou conversando com você 
via email por ser mais conveniente, afinal a tecnologia está aí para 
facilitar a nossa vida, certo?

Vou continuar falando racionalmente, apesar de não ver nenhum problema 
em te encontrar para um papo mais descontraído.

Alguns absurdos que vc escreveu:

- Java não possui todos os tipos derivados de ancestral comum:

Possui sim... Além de possuir tipos primitivos mais leves, que por sua 
vez possuem suas classes equivalentes (Wrappers). Todas são derivadas da 
class Object.

- Java não possui Structs:

Realmente não possui a palavra Structs, mas é ridículo simular um C 
Struct com uma class ou inner class.

- Java não pode passar parametros por referencia:

Todos os objetos Java são passados por referencia. Qualquer principiante 
em Java precisa saber disso.

- Java não possui Propriedades:

Já ouviu falar em JavaBeans ??? Tb existe uma classe Properties que faz 
isso facilmente.

RE: [java-list] Re: Artigo Java x C#

2001-10-03 Por tôpico Daniel A. Melo

Completando:
por valor, mas o valor pode ser uma referencia a um objeto.
exemplo.
em um metodo 
public Objeto getObjeto();

sera retornado a referencia ao Objeto.
outro:
public String teste.
teste é referencia ao Objeto String e como nao foi instanciado aponta
para NULL.
se eu faco:
teste = new String(eheheh);
a referencia agora aponta para um objeto string cujo conteudo é
eheheh;

com o intuito de ajudar,

Daniel A.

At 09:52 03/10/01 -0300, [EMAIL PROTECTED]
wrote:
Sérgio,

Eu gostaria de fazer uma pequena correção no seu email. 
Java não possui passagem por referência. Somente por valor. Existe uma forma de simular passagem de parâmetros por referência, utilizando os objetos ou tipos primitivos armazenados em um array, por exemplo. Mas não existe passagem por referência.

Antes que o alguém dê pulinhos de alegria, eu pergunto: e qual é o problema? Alguém por favor, apresente um artigo demonstrativo, baseado em testes de performance ou de algum requisito que mostre qual é o grandisíssimo problema de Java utilizar passagem por valor, e não por referência? Mesmo que haja, isso significa que Java é ruim?

Abraços, 
Denard 
-Original Message- 
From: Sergio Oliveira Jr. [mailto:[EMAIL PROTECTED]] 
Sent: terça-feira, 2 de outubro de 2001 22:56 
To: [EMAIL PROTECTED] 
Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED] 
Subject: [java-list] Re: Artigo Java x C# 
Mauro, 
Não era a minha intensão te tirar do sério. Não vejo problema algum em me 
engajar num papo com você face-to-face. Só estou conversando com você via 
email por ser mais conveniente, afinal a tecnologia está aí para facilitar a 
nossa vida, certo? 
Vou continuar falando racionalmente, apesar de não ver nenhum problema em te 
encontrar para um papo mais descontraído. 
Alguns absurdos que vc escreveu: 
- Java não possui todos os tipos derivados de ancestral comum: 
Possui sim... Além de possuir tipos primitivos mais leves, que por sua vez 
possuem suas classes equivalentes (Wrappers). Todas são derivadas da class 
Object. 
- Java não possui Structs: 
Realmente não possui a palavra Structs, mas é ridículo simular um C Struct 
com uma class ou inner class. 
- Java não pode passar parametros por referencia: 
Todos os objetos Java são passados por referencia. Qualquer principiante em 
Java precisa saber disso. 
- Java não possui Propriedades: 
Já ouviu falar em JavaBeans ??? Tb existe uma classe Properties que faz isso 
facilmente. 
- Java categoricamente não possui eventos nem delegate: 
Toda a GUI do Java é orientada a eventos e a listeners. 
Java não possui ponteiros para funções, mas possui interfaces que podem 
facilmente e de uma forma mais elegante e poderosa realizar callbacks. 
- Java não possui Atributos: 
Não sei o que vc quiz dizer com isso, mas Java possui uma API de Reflection 
poderosíssima. 
- Java não possui Ponteiros: 
Ainda bem! Referencia = Ponteiro com a excessão que não podemos fazer 
operações aritiméticas com referencias. 
Todo mundo sabe que os ponteiros sempre foram a maior fonte de bugs, falhas 
de segurança, vírus e dores de cabeça para os programadores C. 
- Java não possui Forech: loop para varrer arrays e coleções 
Dê uma olhada na API Collections. Vc vai ficar impressionado com a 
qualidade, eficiência e performance dessa API. 
- Java não possui Campos readonly. 
Lógico que possui. Basta utilizar final. 
- Java não possui Documentação integrada em XML. 
Javadoc serve exatamente para isso que vc sugere como vantagem do C#. 
- Java não possui Controle sobre estouro de faixa numérica 
Lógico que possui. Pelo amor de Deus... 
- Java não possui Diretivas de compilação condicional (#ifdef etc) 
Não precisa pois utilizando o final boolean DEBUG = false; o compilador 
automaticamente otimiza o código compilado retirando esse código morto. 
- Java não possui Padronização por algum organismo internacional 
??? Já ouviu falar em Enterprise JavaBeans, Servlet, JSP, etc. Diversas 
empresas adotaram essas especificações, independentemente de imposições da 
Sun. Apenas a Máquina Virtual da microsoft não era compatível com todas as 
demais, daí a derrota da Microsoft na justiça. 
- Java não Chama APIs do Windows e DLLs 
Lógico que chama via JNI. 
Como voce percebe pelos meus comentários acima. Vc definitivamente não é a 
pessoa certa para fazer essa comparação entre C# e Java. A não ser que vc 
seja um homem de marketing e não da área de TI. 
-- 
Sergio Oliveira Jr. 
Sun Certified Java Programmer 
Desenvolvedor e Consultor Java 
Empresa SmartJava 
-- 

From: Mauro Sant'Anna [EMAIL PROTECTED] 
To: [EMAIL PROTECTED] 
Subject: Re: Artigo Java x C# 
Date: Wed, 03 Oct 2001 00:41:36 + 
 
Se você quizesse alertar-me, teria fornecido exemplos concretos e fatos 
ao invés de me chamar de ignorante/mentiroso. 
 
É incrível como as pessoas ficam valentes na frente de um teclado. 
Imagine se você teria a coragem de me dizer cara a cara o que você me 
escreveu, depois de uma comparação C# X

Re: [java-list] Re: Artigo Java x C#

2001-10-03 Por tôpico Sven van ´t Veer
Title: RE: [java-list] Re: Artigo Java x C#



Na verdade java use pass by reference mas utiliza copias.

Um possivel melhor performance  um swap(a, b). Instanciao de
classes em Java  caro porem, passar referencias. Em Java seria: swap(array[],
int int). Posso me imaginar que a maneira pass by reference  mais rpido.

[EMAIL PROTECTED] wrote:
[EMAIL PROTECTED]">
  
  
  Srgio,
  Eu gostaria de fazer uma pequena correo no seu email.
  Java no possui passagem por referncia. Somente por
valor. Existe uma forma de "simular" passagem de parmetros por referncia,
utilizando os objetos ou tipos primitivos armazenados em um array, por exemplo.
Mas no existe passagem por referncia.
  Antes que o algum d pulinhos de alegria, eu pergunto:
e qual  o problema? Algum por favor, apresente um artigo demonstrativo,
baseado em testes de performance ou de algum requisito que mostre qual 
o grandisssimo problema de Java utilizar passagem por valor, e no por referncia?
Mesmo que haja, isso significa que Java  ruim?
  Abraos,
  Denard
  -Original Message-
  From: Sergio Oliveira Jr. [
mailto:[EMAIL PROTECTED]
] 
  Sent: tera-feira, 2 de outubro de 2001 22:56
  To: [EMAIL PROTECTED]
  Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED]
  Subject: [java-list] Re: Artigo Java x C#
  Mauro,
  No era a minha intenso te tirar do srio. No vejo
problema algum em me 
  engajar num papo com voc face-to-face. S estou conversando
com voc via 
  email por ser mais conveniente, afinal a tecnologia est
a para facilitar a 
  nossa vida, certo?
  Vou continuar falando racionalmente, apesar de no ver
nenhum problema em te 
  encontrar para um papo mais descontrado.
  Alguns absurdos que vc escreveu:
  - Java no possui todos os tipos derivados de ancestral
comum:
  Possui sim... Alm de possuir tipos primitivos mais leves,
que por sua vez 
  possuem suas classes equivalentes (Wrappers). Todas so
derivadas da class 
  Object.
  - Java no possui Structs:
  Realmente no possui a palavra Structs, mas  ridculo
simular um C Struct 
  com uma class ou inner class.
  - Java no pode passar parametros por referencia:
  Todos os objetos Java so passados por referencia. Qualquer
principiante em 
  Java precisa saber disso.
  - Java no possui Propriedades:
  J ouviu falar em JavaBeans ??? Tb existe uma classe
Properties que faz isso 
  facilmente.
  - Java categoricamente no possui eventos nem delegate:
  Toda a GUI do Java  orientada a eventos e a listeners.
  Java no possui ponteiros para funes, mas possui interfaces
que podem 
  facilmente e de uma forma mais elegante e poderosa realizar
callbacks.
  - Java no possui Atributos:
  No sei o que vc quiz dizer com isso, mas Java possui
uma API de Reflection 
  poderosssima.
  - Java no possui Ponteiros:
  Ainda bem! Referencia = Ponteiro com a excesso que no
podemos fazer 
  operaes aritimticas com referencias.
  Todo mundo sabe que os ponteiros sempre foram a maior fonte
de bugs, falhas 
  de segurana, vrus e dores de cabea para os programadores
C.
  - Java no possui Forech: loop para varrer arrays e colees
  D uma olhada na API Collections. Vc vai ficar impressionado
com a 
  qualidade, eficincia e performance dessa API.
  - Java no possui Campos readonly.
  Lgico que possui. Basta utilizar final.
  - Java no possui Documentao integrada em XML.
  Javadoc serve exatamente para isso que vc sugere como
vantagem do C#.
  - Java no possui Controle sobre "estouro de faixa" numrica
  Lgico que possui. Pelo amor de Deus...
  - Java no possui Diretivas de compilao condicional
(#ifdef etc)
  No precisa pois utilizando o final boolean DEBUG = false;
o compilador 
  automaticamente otimiza o cdigo compilado retirando esse
cdigo morto.
  - Java no possui Padronizao por algum organismo internacional
  ??? J ouviu falar em Enterprise JavaBeans, Servlet,
JSP, etc. Diversas 
  empresas adotaram essas especificaes, independentemente
de imposies da 
  Sun. Apenas a Mquina Virtual da microsoft no era compatvel
com todas as 
  demais, da a derrota da Microsoft na justia.
  - Java no Chama APIs do Windows e DLLs
  Lgico que chama via JNI.
  Como voce percebe pelos meus comentrios acima. Vc definitivamente
no  a 
  pessoa certa para fazer essa comparao entre C# e Java.
A no ser que vc 
  seja um homem de marketing e no da rea de TI.
  --
  Sergio Oliveira Jr.
  Sun Certified Java Programmer
  Desenvolvedor e Consultor Java
  Empresa SmartJava
  --
  
  
  From: "Mauro Sant'Anna" [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Subject: Re: Artigo Java x C#
  Date: Wed, 03 Oct 2001 00:41:36 +
  
  Se voc quizesse "alertar-me", teria fornecido exemplos
concretos e fatos 
  ao invs de me chamar de ignorante/mentiroso.
  
   incrvel como as pessoas ficam "valentes" na frente
de um teclado. 
  Imagine se voc teria a coragem de me dizer cara a cara
o que voc me 
  escreveu, depois de uma comparao C# X Java em um eventual
seminrio 

RE: [java-list] Re: Artigo Java x C#

2001-10-03 Por tôpico Ricardo Santiago


Cara, vamos deixar claro:
Tudo em java é passado por valor.
MAS, você só mantém REFERENCIAS para objetos (ou
pointeiros se achar melhor).
Logo, todo objeto é passado por referencia visto que a
referencia é que é passada por valor!

Isso não implica de forma alguma em perda de
performance, simplesmente significa que qq váriavel
que você passar como paramêtro, se for modificada
dentro do método invocado,não refletirá as mudanças
quando o método retornar

Como em:

String s = test;
int i = 1;

mudeOsValores(s, i);

System.out.println(s + 1); // == test1

Onde o metodo mudeOsValores contem o seguinte codigo

public void mudeOsValores(String s, int i) {
  s = outracoisa;
  i = 2;
}

Ricardo Munhoz Santiago
--- [EMAIL PROTECTED] wrote:
 Sérgio,
 
 Eu gostaria de fazer uma pequena correção no seu
 email.
 
 Java não possui passagem por referência. Somente por
 valor. Existe uma forma
 de simular passagem de parâmetros por referência,
 utilizando os objetos ou
 tipos primitivos armazenados em um array, por
 exemplo. Mas não existe
 passagem por referência.
 
 Antes que o alguém dê pulinhos de alegria, eu
 pergunto: e qual é o problema?
 Alguém por favor, apresente um artigo demonstrativo,
 baseado em testes de
 performance ou de algum requisito que mostre qual é
 o grandisíssimo problema
 de Java utilizar passagem por valor, e não por
 referência? Mesmo que haja,
 isso significa que Java é ruim?
 
 Abraços,
 Denard
 
 -Original Message-
 From: Sergio Oliveira Jr.
 [mailto:[EMAIL PROTECTED]] 
 Sent: terça-feira, 2 de outubro de 2001 22:56
 To: [EMAIL PROTECTED]
 Cc: [EMAIL PROTECTED];
 [EMAIL PROTECTED]
 Subject: [java-list] Re: Artigo Java x C#
 
 Mauro,
 
 Não era a minha intensão te tirar do sério. Não vejo
 problema algum em me 
 engajar num papo com você face-to-face. Só estou
 conversando com você via 
 email por ser mais conveniente, afinal a tecnologia
 está aí para facilitar a
 
 nossa vida, certo?
 
 Vou continuar falando racionalmente, apesar de não
 ver nenhum problema em te
 
 encontrar para um papo mais descontraído.
 
 Alguns absurdos que vc escreveu:
 
 - Java não possui todos os tipos derivados de
 ancestral comum:
 
 Possui sim... Além de possuir tipos primitivos mais
 leves, que por sua vez 
 possuem suas classes equivalentes (Wrappers). Todas
 são derivadas da class 
 Object.
 
 - Java não possui Structs:
 
 Realmente não possui a palavra Structs, mas é
 ridículo simular um C Struct 
 com uma class ou inner class.
 
 - Java não pode passar parametros por referencia:
 
 Todos os objetos Java são passados por referencia.
 Qualquer principiante em 
 Java precisa saber disso.
 
 - Java não possui Propriedades:
 
 Já ouviu falar em JavaBeans ??? Tb existe uma classe
 Properties que faz isso
 
 facilmente.
 
 - Java categoricamente não possui eventos nem
 delegate:
 
 Toda a GUI do Java é orientada a eventos e a
 listeners.
 Java não possui ponteiros para funções, mas possui
 interfaces que podem 
 facilmente e de uma forma mais elegante e poderosa
 realizar callbacks.
 
 - Java não possui Atributos:
 
 Não sei o que vc quiz dizer com isso, mas Java
 possui uma API de Reflection 
 poderosíssima.
 
 - Java não possui Ponteiros:
 
 Ainda bem! Referencia = Ponteiro com a excessão que
 não podemos fazer 
 operações aritiméticas com referencias.
 Todo mundo sabe que os ponteiros sempre foram a
 maior fonte de bugs, falhas 
 de segurança, vírus e dores de cabeça para os
 programadores C.
 
 - Java não possui Forech: loop para varrer arrays e
 coleções
 
 Dê uma olhada na API Collections. Vc vai ficar
 impressionado com a 
 qualidade, eficiência e performance dessa API.
 
 - Java não possui Campos readonly.
 
 Lógico que possui. Basta utilizar final.
 
 - Java não possui Documentação integrada em XML.
 
 Javadoc serve exatamente para isso que vc sugere
 como vantagem do C#.
 
 - Java não possui Controle sobre estouro de faixa
 numérica
 
 Lógico que possui. Pelo amor de Deus...
 
 - Java não possui Diretivas de compilação
 condicional (#ifdef etc)
 
 Não precisa pois utilizando o final boolean DEBUG =
 false; o compilador 
 automaticamente otimiza o código compilado retirando
 esse código morto.
 
 - Java não possui Padronização por algum organismo
 internacional
 
 ??? Já ouviu falar em Enterprise JavaBeans, Servlet,
 JSP, etc. Diversas 
 empresas adotaram essas especificações,
 independentemente de imposições da 
 Sun. Apenas a Máquina Virtual da microsoft não era
 compatível com todas as 
 demais, daí a derrota da Microsoft na justiça.
 
 - Java não Chama APIs do Windows e DLLs
 
 Lógico que chama via JNI.
 
 Como voce percebe pelos meus comentários acima. Vc
 definitivamente não é a 
 pessoa certa para fazer essa comparação entre C# e
 Java. A não ser que vc 
 seja um homem de marketing e não da área de TI.
 
 --
 Sergio Oliveira Jr.
 Sun Certified Java Programmer
 Desenvolvedor e Consultor Java
 Empresa SmartJava
 --
 
 
 
 From: Mauro

Re: [java-list] Re: Artigo Java x C#

2001-10-03 Por tôpico Carlos E O Chierici

A passagem de parametros em Java funciona assim:

- P/ objetos: por referencia
- P/ primitivos: por valor

Veja o exemplo:

public class Teste
{
   public void run()
   {
  TObj obj = new TObj();
  obj .i = 3;
  System.out.println(obj.i); // obj.i = 3
  NovoInt(obj);
  System.out.println(obj.i); // obj.i = 5
   }

   public void NovoInt(TObj meuObj)
   {
  meuObj.i = 5;
   }

   public static void main(String args[])
   {
  Teste t = new Teste();
   t.run();
   }
}

class TObj
{
   public int i;
}


[]s

Carlos E O Chierici
[EMAIL PROTECTED]

- Original Message -

From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, October 03, 2001 9:52 AM
Subject: RE: [java-list] Re: Artigo Java x C#


Sérgio,

Eu gostaria de fazer uma pequena correção no seu email.

Java não possui passagem por referência. Somente por valor. Existe uma forma
de simular passagem de parâmetros por referência, utilizando os objetos ou
tipos primitivos armazenados em um array, por exemplo. Mas não existe
passagem por referência.

Antes que o alguém dê pulinhos de alegria, eu pergunto: e qual é o problema?
Alguém por favor, apresente um artigo demonstrativo, baseado em testes de
performance ou de algum requisito que mostre qual é o grandisíssimo problema
de Java utilizar passagem por valor, e não por referência? Mesmo que haja,
isso significa que Java é ruim?

Abraços,
Denard


-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-




RE: [java-list] Re: Artigo Java x C# GEA2

2001-10-03 Por tôpico Wild Boar Wannabe


 Perae !!! Eh claro que refletira as mudancas !!! Apos
ser chamado o metodo mudeOsValores() o inteiro e a
String mandados por parametro terao seus valores
mudados !!! Ou entao eu tou louco !!! Por que sempre
foi assim pra mim ...

 --- Ricardo Santiago [EMAIL PROTECTED]
escreveu:  
 Cara, vamos deixar claro:
 Tudo em java é passado por valor.
 MAS, você só mantém REFERENCIAS para objetos (ou
 pointeiros se achar melhor).
 Logo, todo objeto é passado por referencia visto que
 a
 referencia é que é passada por valor!
 
 Isso não implica de forma alguma em perda de
 performance, simplesmente significa que qq váriavel
 que você passar como paramêtro, se for modificada
 dentro do método invocado,não refletirá as mudanças
 quando o método retornar
 
 Como em:
 
 String s = test;
 int i = 1;
 
 mudeOsValores(s, i);
 
 System.out.println(s + 1); // == test1
 
 Onde o metodo mudeOsValores contem o seguinte codigo
 
 public void mudeOsValores(String s, int i) {
   s = outracoisa;
   i = 2;
 }
 
 Ricardo Munhoz Santiago
 --- [EMAIL PROTECTED] wrote:
  Sérgio,
  
  Eu gostaria de fazer uma pequena correção no seu
  email.
  
  Java não possui passagem por referência. Somente
 por
  valor. Existe uma forma
  de simular passagem de parâmetros por
 referência,
  utilizando os objetos ou
  tipos primitivos armazenados em um array, por
  exemplo. Mas não existe
  passagem por referência.
  
  Antes que o alguém dê pulinhos de alegria, eu
  pergunto: e qual é o problema?
  Alguém por favor, apresente um artigo
 demonstrativo,
  baseado em testes de
  performance ou de algum requisito que mostre qual
 é
  o grandisíssimo problema
  de Java utilizar passagem por valor, e não por
  referência? Mesmo que haja,
  isso significa que Java é ruim?
  
  Abraços,
  Denard
  
  -Original Message-
  From: Sergio Oliveira Jr.
  [mailto:[EMAIL PROTECTED]] 
  Sent: terça-feira, 2 de outubro de 2001 22:56
  To: [EMAIL PROTECTED]
  Cc: [EMAIL PROTECTED];
  [EMAIL PROTECTED]
  Subject: [java-list] Re: Artigo Java x C#
  
  Mauro,
  
  Não era a minha intensão te tirar do sério. Não
 vejo
  problema algum em me 
  engajar num papo com você face-to-face. Só estou
  conversando com você via 
  email por ser mais conveniente, afinal a
 tecnologia
  está aí para facilitar a
  
  nossa vida, certo?
  
  Vou continuar falando racionalmente, apesar de não
  ver nenhum problema em te
  
  encontrar para um papo mais descontraído.
  
  Alguns absurdos que vc escreveu:
  
  - Java não possui todos os tipos derivados de
  ancestral comum:
  
  Possui sim... Além de possuir tipos primitivos
 mais
  leves, que por sua vez 
  possuem suas classes equivalentes (Wrappers).
 Todas
  são derivadas da class 
  Object.
  
  - Java não possui Structs:
  
  Realmente não possui a palavra Structs, mas é
  ridículo simular um C Struct 
  com uma class ou inner class.
  
  - Java não pode passar parametros por referencia:
  
  Todos os objetos Java são passados por referencia.
  Qualquer principiante em 
  Java precisa saber disso.
  
  - Java não possui Propriedades:
  
  Já ouviu falar em JavaBeans ??? Tb existe uma
 classe
  Properties que faz isso
  
  facilmente.
  
  - Java categoricamente não possui eventos nem
  delegate:
  
  Toda a GUI do Java é orientada a eventos e a
  listeners.
  Java não possui ponteiros para funções, mas possui
  interfaces que podem 
  facilmente e de uma forma mais elegante e poderosa
  realizar callbacks.
  
  - Java não possui Atributos:
  
  Não sei o que vc quiz dizer com isso, mas Java
  possui uma API de Reflection 
  poderosíssima.
  
  - Java não possui Ponteiros:
  
  Ainda bem! Referencia = Ponteiro com a excessão
 que
  não podemos fazer 
  operações aritiméticas com referencias.
  Todo mundo sabe que os ponteiros sempre foram a
  maior fonte de bugs, falhas 
  de segurança, vírus e dores de cabeça para os
  programadores C.
  
  - Java não possui Forech: loop para varrer arrays
 e
  coleções
  
  Dê uma olhada na API Collections. Vc vai ficar
  impressionado com a 
  qualidade, eficiência e performance dessa API.
  
  - Java não possui Campos readonly.
  
  Lógico que possui. Basta utilizar final.
  
  - Java não possui Documentação integrada em XML.
  
  Javadoc serve exatamente para isso que vc sugere
  como vantagem do C#.
  
  - Java não possui Controle sobre estouro de
 faixa
  numérica
  
  Lógico que possui. Pelo amor de Deus...
  
  - Java não possui Diretivas de compilação
  condicional (#ifdef etc)
  
  Não precisa pois utilizando o final boolean DEBUG
 =
  false; o compilador 
  automaticamente otimiza o código compilado
 retirando
  esse código morto.
  
  - Java não possui Padronização por algum organismo
  internacional
  
  ??? Já ouviu falar em Enterprise JavaBeans,
 Servlet,
  JSP, etc. Diversas 
  empresas adotaram essas especificações,
  independentemente de imposições da 
  Sun. Apenas a Máquina Virtual da microsoft não era
  compatível com todas as 
  demais, daí a derrota da Microsoft na

Re: [java-list] Re: Artigo Java x C#

2001-10-03 Por tôpico Leonardo Souza Mario Bueno

Nain, nain. Java não tem passagem por referencia nem para objetos.

Ex:

public void inc(Integer i) {
i = new Integer(i.intValue()++);
System.out.println(i =  + i); // i = 2
}

i = new Integer(1);
inc(i);
System.out.println(i =  + i); // i = 1

Resultado:

i = 2
i = 1

Ao chamar inc(i) é passada uma referencia ao objeto i por valor.. ou seja,
mudanças na referencia dentro do metodo não terão efeito fora dele..

[]'s,

Leonardo.

- Original Message -
From: Carlos E O Chierici [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, October 03, 2001 1:35 PM
Subject: Re: [java-list] Re: Artigo Java x C#


 A passagem de parametros em Java funciona assim:

 - P/ objetos: por referencia
 - P/ primitivos: por valor

 Veja o exemplo:

 public class Teste
 {
public void run()
{
   TObj obj = new TObj();
   obj .i = 3;
   System.out.println(obj.i); // obj.i = 3
   NovoInt(obj);
   System.out.println(obj.i); // obj.i = 5
}

public void NovoInt(TObj meuObj)
{
   meuObj.i = 5;
}

public static void main(String args[])
{
   Teste t = new Teste();
t.run();
}
 }

 class TObj
 {
public int i;
 }


 []s

 Carlos E O Chierici
 [EMAIL PROTECTED]

 - Original Message -

 From: [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Wednesday, October 03, 2001 9:52 AM
 Subject: RE: [java-list] Re: Artigo Java x C#


 Sérgio,

 Eu gostaria de fazer uma pequena correção no seu email.

 Java não possui passagem por referência. Somente por valor. Existe uma
forma
 de simular passagem de parâmetros por referência, utilizando os objetos
ou
 tipos primitivos armazenados em um array, por exemplo. Mas não existe
 passagem por referência.

 Antes que o alguém dê pulinhos de alegria, eu pergunto: e qual é o
problema?
 Alguém por favor, apresente um artigo demonstrativo, baseado em testes de
 performance ou de algum requisito que mostre qual é o grandisíssimo
problema
 de Java utilizar passagem por valor, e não por referência? Mesmo que haja,
 isso significa que Java é ruim?

 Abraços,
 Denard


 -- LISTA SOUJAVA 
 http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
 dúvidas mais comuns: http://www.soujava.org.br/faq.htm
 regras da lista: http://www.soujava.org.br/regras.htm
 para sair da lista: envie email para [EMAIL PROTECTED]
 -



-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-




[java-list] Re: Artigo Java x C#

2001-10-02 Por tôpico Sergio Oliveira Jr.

Mauro,

Eu te dei duas opções:

1) Vc está mentindo
2) Vc não sabe nada sobre Java

Se vc optou pela alternativa 1), não há nada que eu possa fazer.

Só quiz humildemente alertá-lo que comprar uma briga sem estar numa posição 
neutra e sem possuir informações corretas pode ser perigoso para a sua 
imagem profissional.

Possuo 6 anos de experiência com a tecnologia Java e posso lhe afirmar que o 
seu artigo possui diversas afirmações incorretas, bizarras e suspeitas sobre 
a tecnologia java.

--
Sergio Oliveira Jr.
Sun Certified Java Programmer
Desenvolvedor e Consultor Java
--



From: Mauro Sant'Anna [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: Re: Artigo Java x C#
Date: Wed, 03 Oct 2001 00:24:44 +

Caro senhor,

O meu e-mail está disponível para críticas construtivas e esclarecimento de 
dúvidas, não para ofensas.

Mente o senhor ao iniciar a mensagem com Com todo o respeito e a seguir 
me chamar de mentiroso.

Sem mais,

Mauro

From: Sergio Oliveira Jr. [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
CC: [EMAIL PROTECTED], [EMAIL PROTECTED]
Subject: Artigo Java x C#
Date: Wed, 03 Oct 2001 00:19:20 +


Caro Mauro Sant'Anna,

Com todo o respeito gostaria de lhe informar que o seu artigo sobre Java x 
C# possui diversos erros grotescos em relação a tecnologia Java. Isso 
demonstra que ou vc está mentindo para promover a tecnologia C# ou vc não 
sabe absolutamente nada sobre a tecnologia Java e nunca deveria ter 
escrito um artigo como esse.

Eu não tenho nenhuma experiência com a tecnologia .Net, apenas sei que ela 
é a alternativa da Microsoft para o sucesso da linguagem Java no mercado. 
Portanto me limito a ficar calado quando o assunto é comparar C# com Java. 
Vc definitivamente deveria fazer o mesmo para não passar vergonha.

--
Sergio Oliveira Jr.
Sun Certified Java Programmer
Desenvolvedor e Consultor Java
--




_
Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp


-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-




[java-list] Re: Artigo Java x C#

2001-10-02 Por tôpico Sergio Oliveira Jr.

Mauro,

Não era a minha intensão te tirar do sério. Não vejo problema algum em me 
engajar num papo com você face-to-face. Só estou conversando com você via 
email por ser mais conveniente, afinal a tecnologia está aí para facilitar a 
nossa vida, certo?

Vou continuar falando racionalmente, apesar de não ver nenhum problema em te 
encontrar para um papo mais descontraído.

Alguns absurdos que vc escreveu:

- Java não possui todos os tipos derivados de ancestral comum:

Possui sim... Além de possuir tipos primitivos mais leves, que por sua vez 
possuem suas classes equivalentes (Wrappers). Todas são derivadas da class 
Object.

- Java não possui Structs:

Realmente não possui a palavra Structs, mas é ridículo simular um C Struct 
com uma class ou inner class.

- Java não pode passar parametros por referencia:

Todos os objetos Java são passados por referencia. Qualquer principiante em 
Java precisa saber disso.

- Java não possui Propriedades:

Já ouviu falar em JavaBeans ??? Tb existe uma classe Properties que faz isso 
facilmente.

- Java categoricamente não possui eventos nem delegate:

Toda a GUI do Java é orientada a eventos e a listeners.
Java não possui ponteiros para funções, mas possui interfaces que podem 
facilmente e de uma forma mais elegante e poderosa realizar callbacks.

- Java não possui Atributos:

Não sei o que vc quiz dizer com isso, mas Java possui uma API de Reflection 
poderosíssima.

- Java não possui Ponteiros:

Ainda bem! Referencia = Ponteiro com a excessão que não podemos fazer 
operações aritiméticas com referencias.
Todo mundo sabe que os ponteiros sempre foram a maior fonte de bugs, falhas 
de segurança, vírus e dores de cabeça para os programadores C.

- Java não possui Forech: loop para varrer arrays e coleções

Dê uma olhada na API Collections. Vc vai ficar impressionado com a 
qualidade, eficiência e performance dessa API.

- Java não possui Campos readonly.

Lógico que possui. Basta utilizar final.

- Java não possui Documentação integrada em XML.

Javadoc serve exatamente para isso que vc sugere como vantagem do C#.

- Java não possui Controle sobre “estouro de faixa” numérica

Lógico que possui. Pelo amor de Deus...

- Java não possui Diretivas de compilação condicional (#ifdef etc)

Não precisa pois utilizando o final boolean DEBUG = false; o compilador 
automaticamente otimiza o código compilado retirando esse código morto.

- Java não possui Padronização por algum organismo internacional

??? Já ouviu falar em Enterprise JavaBeans, Servlet, JSP, etc. Diversas 
empresas adotaram essas especificações, independentemente de imposições da 
Sun. Apenas a Máquina Virtual da microsoft não era compatível com todas as 
demais, daí a derrota da Microsoft na justiça.

- Java não Chama APIs do Windows e DLLs

Lógico que chama via JNI.

Como voce percebe pelos meus comentários acima. Vc definitivamente não é a 
pessoa certa para fazer essa comparação entre C# e Java. A não ser que vc 
seja um homem de marketing e não da área de TI.

--
Sergio Oliveira Jr.
Sun Certified Java Programmer
Desenvolvedor e Consultor Java
Empresa SmartJava
--



From: Mauro Sant'Anna [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: Re: Artigo Java x C#
Date: Wed, 03 Oct 2001 00:41:36 +

Se você quizesse alertar-me, teria fornecido exemplos concretos e fatos 
ao invés de me chamar de ignorante/mentiroso.

É incrível como as pessoas ficam valentes na frente de um teclado. 
Imagine se você teria a coragem de me dizer cara a cara o que você me 
escreveu, depois de uma comparação C# X Java em um eventual seminário da 
Microsoft - mais ou menos ou equivalente a um artigo no site da Microsoft.

Mauro

From: Sergio Oliveira Jr. [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
CC: [EMAIL PROTECTED], [EMAIL PROTECTED]
Subject: Re: Artigo Java x C#
Date: Wed, 03 Oct 2001 00:35:27 +

Mauro,

Eu te dei duas opções:

1) Vc está mentindo
2) Vc não sabe nada sobre Java

Se vc optou pela alternativa 1), não há nada que eu possa fazer.

Só quiz humildemente alertá-lo que comprar uma briga sem estar numa 
posição neutra e sem possuir informações corretas pode ser perigoso para a 
sua imagem profissional.

Possuo 6 anos de experiência com a tecnologia Java e posso lhe afirmar que 
o seu artigo possui diversas afirmações incorretas, bizarras e suspeitas 
sobre a tecnologia java.

--
Sergio Oliveira Jr.
Sun Certified Java Programmer
Desenvolvedor e Consultor Java
--



From: Mauro Sant'Anna [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: Re: Artigo Java x C#
Date: Wed, 03 Oct 2001 00:24:44 +

Caro senhor,

O meu e-mail está disponível para críticas construtivas e esclarecimento 
de dúvidas, não para ofensas.

Mente o senhor ao iniciar a mensagem com Com todo o respeito e a seguir 
me chamar de mentiroso.

Sem mais,

Mauro

From: Sergio Oliveira Jr. [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
CC: [EMAIL