[java-list] RE:_[java-list]_Herança_Multipla_-_enfim_uma_discussão_calma...
Programando para interfaces. A sitação do livro do GOF é excelente. Mas gostaria de colocar um outro ponto de vista. Hoje além da escola que prega o design antecipatório de software (que é onde os design patterns entram) existe uma outra escola de redesign constante (onde refactoring entra). Refactoring é exatamente redesign, é mudança de design de código já escrito. Para que serve e para onde leva? Segundo esta filosofia, você deve fazer sempre a coisa mais simples que possa funcionar (desde que esta coisa simples não contenha nenhum código duplicado). Acredita-se que o melhor estado do software no momento da mudança é: simples. Se for simples é fácil de mudar. Contudo, se você fez a coisa mais simples que pudesse funcionar, com certeza não criou interfaces e flexibilidades desnecessárias (no momento). Mas e agora quando chega a hora de inserir uma nova funcionalidade, o código não está preparado! Não! Mas está simples e agora é a hora de aplicar refactoring. Se a nova funcionalidade não se encaixa bem no software como está você faz as mudanças necessárias para que ele ganhe um novo design, flexivel APENAS onde é necessário. Esta filosofia vem da idéia de que atualmente o mundo dos negócios e das tecnologias muda muito rápido, e você não pode prever TODAS as mudanças, por isso um design antecipatório pode não flexibilizar pontos que seriam necessários no futuro e ao mesmo tempo adicionar complexidade por flexibilizar pontos que não seriam necessários no futuro. Estas idéias são extremamente práticas e hoje são adotadas por várias metodologias de software conhecidas como Agile (http://agilealliance.org) Umas das metodologias mais conhecidas e bem estruturadas nesta linha é eXtreme Programming ou XP. (http://www.extremeprogramming.org/) Para uma discussão nacional sobre o assunto, você pode se tornar membro dos XPers, grupo nacional de estudo e divulgação de XP (http://groups.yahoo.com/group/xpers) O equivalente do livro do GOF (Design Patterns) no pensamento de refactoring é: Refactoring - Improving the Design of Existing Code Autor: Martin Fowler. Nota Final: Após o uso de refactoring, muitos design patterns acabarão sendo aplicados. A vantagem é que você os aplica apenas onde e quando são necessários e não logo de cara onde você PENSA (ou PREVÊ) que sejam necessários. (Os seres humanos não são muito bons em previsões). Ricardo Munhoz Santiago __ 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#
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] Passando por referencias !!!!!!!!
Acho que voce nao prestou BEM atencao no exemplo. Eu estava efetivamente mudando a REFERENCIA para outra String, e nao usando algum metodo que modifique seu estado interior. Que cairia na estoria das classes imutaveis Mudando para uma classe mutável, exemplo StringBuffer veja o método: public void mudaStringBuffer(StringBuffer b) { b.append(mais texto); } E claro que as mudanças refletirao no parametro depois que o metodo terminar. mas se o metodo fosse public void mudaStringBuffer(StringBuffer b) { b = new StringBuffer(mais texto); } As mudanças nao refletiriam. Nao tem nada a ver a estoria de objeto mutavel e imutavel, o que interessa eh que as referencias sao passadas por valor. Os objetos sao passados por referencia. Eu estava tentando mostrar o obvio! Ricardo Munhoz Santiago --- Sergio Oliveira Jr. [EMAIL PROTECTED] wrote: Ricardo, O objeto string não vale porque é uma classe IMUTÁVEL. Não há como trocar o valor da String sem criar outro objeto, ou seja, sem criar outra referencia !! Classes Imutáveis são muito interessantes porque são THREAD-SAFE, evitando condições de corridas e bugs intermitentes. Classes mutáveis são perigosas e podem introduzir brechas de segurança no seu código, principalmente se você estiver escrevendo uma API para um outro programador utilizar. (Alguém aí ainda tem a documentação do Java 1.0 ??? Acho que a classe String no começo era Mutável e só depois a Sun percebeu que isso não era bom e transformou ela em Imutável. Mas não tenho certeza disso.) Se eu tenho um objeto MUTÁVEL como um Vetor por exemplo, eu posso modificá-lo dentro da função sem problemas. Não é muito difícil construir uma String Mutável e aí eu poderia fazer um Swap(s1, s2) pagando o preço de ter que instanciar duas novas Strings. O Sven foi muito feliz levantando essa bola do Swap(a,b) e acabou me deixando com a seguinte dúvida: Em C++ dá para fazer um Swap de Objetos Imutáveis ??? Se dá gostaria de entender como o C++ faz isso, isto é, o que acontece por trás do pano. -- Sergio Oliveira Jr. Sun Certified Java Programmer Desenvolvedor e Consultor Java Empresa SmartJava -- From: Ricardo Santiago [EMAIL PROTECTED] Reply-To: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Subject: RE: [java-list] Re: Artigo Java x C# Date: Wed, 3 Oct 2001 09:16:54 -0700 (PDT) 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
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 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
[java-list] Re: REFERENCIA E VALOR (De uma vez por todas)
Pessoal, antes de mais nada, o final na declaração da classe NÃO A TORNA IMUTAVEL, a torna incapaz de ser extendida via HERANÇA. Nada ALEM DISSO. O final em uma VARIAVEL é outra estoria ... ai sim a torna imutavel. Voltando a discussão de passagem por referencia ou valor e esclarecendo de uma vez por todas: Os parametros sempre são passados por VALOR. Isso significa que é feita uma COPIA da variavel que é passada no parametro. Isso significa que passar um parametro tipo int é a mesma coisa que criar uma NOVA variavel tipo int. int valor = 10; int parametro = valor; Agora se voce mudar a variavel parametro para 20 a variavel valor nao vai mudar CERTO? A mesma coisa para objetos. StringBuffer valor = new StringBuffer(test); StringBuffer parametro = valor; se voce invocar um metodo na variavel parametro como parametro.append(maistest); A mudanca podera ser notada mesmo na variavel valor CERTO? Se voce attribuir outro valor a parametro, dai as mudanças não serão notadas na variavel valor parametro = new StringBuffer(maistest). Pra encerrar vai o PORQUE. As variaveis que contem OBJETOS apenas apontam para (geralmente)um endereco de memoria onde os dados do objeto estao armazenados. Exemplo: StringBuffer buffer = new StringBuffer(texto); o que realmente esta guardado em buffer é um numero de endereco na memoria digamos 1010. Quando eu crio outra variavel e attribuo o valor de buffer, ele contera o mesmo endereco de memoria, ou seja StringBuffer buffer2 = buffer; Tanto buffer2 como buffer tem o mesmo valor 1010 de endereco de memoria. Nesta área da memoria sao armazenados os dados do objeto, por isso quando voce invocar um metodo em qualquer das duas variaveis que mudar o valor de algum dado do objeto, a mudanca sera notada pelas duas variaveis. Pois ambas estao usando a mesma area de memoria Se voce criar outro objeto, ele vivera em outro endereco de memoria e mudancas em um nao afetarao o outro, como em StringBuffer buffer = new StringBuffer(texto); StringBuffer buffer2 = buffer; buffer2 = new StringBuffer(mais); Mudancas em um Objeto NAO afetaram o outro pois apontam para diferentes areas na memoria. Esta explicação esta meio simples, mas espero que ajude quem ainda nao entendeu bem o ponto. Ricardo Munhoz Santiago --- Gabriel De Munno Francisco [EMAIL PROTECTED] wrote: 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(); }
Re: [java-list] Controlando o tamanho de um arquivo !!
Se você quer mesmo implementar isso na mão faça o seguinte: Crie uma thread nova que monitore o crescimento do arquivo. Pode ser uma daemon thread. Mantenha comunicação entre as duas threads, a que escreve o log e a que monitora o tamanho do arquivo. Quando a thread que monitora o tamanho do arquivo detectar que deve particiona-lo, esta deverá notificar a outra, para que ela TRAVE quaisquer tentativas de escrita e feche o arquivo. A thread monitora faz as mudanças necessárias no arquivo e após terminar notifica novamente a outra thread para que esta abra o arquivo e volte a atender os clientes esperando. Deu pra ter uma idéia? Você vai ter de estudar um pouco sobre threads e syncronization efetiva. Ricardo Munhoz Santiago --- Alan Alexandre da Silva [EMAIL PROTECTED] wrote: Oi, o problema é que o arquivo vai estar sendo usado. Imagine que o arquivo de log está recebendo mensagens a todo o momento. Então, quando o arquivo atingir um determinado tamanho, eu terei que pegar seu conteúdo, tranferi-lo para outro arquivo(backup) e tornar a fazer o meu arquivo de log receber mensagens. Várias classes estão jogando mensagens no meu arquivo de log. Tem alguma sugestão ? Obrigado. Alan -- 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!? Listen to your Yahoo! Mail messages from any phone. http://phone.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] JSP e XML
Cara, a mensagem diz: the document does not contain exactly one root node Ou seja o documento não tem um único root element. Isso significa que voce deve estar fazendo algo como MinhaTag /MinhaTag importxml url='xmlData.jsp'/ Isso não vai funcionar. Você precisa ter um único root element. Tente algo como UniqueRoot MinhaTag /MinhaTag importxml url='xmlData.jsp'/ /UniqueRoot * É claro que os nomes das tags são só exemplos Ricardo Munhoz Santiago --- Ricardo Silva [EMAIL PROTECTED] wrote: Seguindo tenho uma pagina JSP que devolve o ContentType (text/xml) , o que acontece é o seguinte tenho a tag importxml dentro de uma comando out.println(importxml url='xmlData.jsp'/) ; so que estou tendo dificuldade em conseguir fazer isto funcionar , o resultado é que aparentemente funcionou mais nao devo estar coneguindo carregar este jsp direto pois obtenho um erro the document does not contain exactly one root node alguem ´já fez algo parecido ou tem a solucao para este pequeno grande problema? Agradeco Antecipadamente. __ Do You Yahoo!? Listen to your Yahoo! Mail messages from any phone. http://phone.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#
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] Dúvida JSP
Se voce não quer algum attributo da request original na segunda página use o metodo request.removeAttribute(String attributeName) --- [EMAIL PROTECTED] wrote: Pessoal, Tudo bem, Nas minhas páginas (jsp) eu uso o comando forward para redirecionar para outra página (jsp), só que o objeto request da página atual vai para a página redirecioanda, ou seja, nesta nova página eu verifico o conteudo do campo fazendo um request.getParameter(txtNome), só que neste momento existem 2 campos com o nome txtNome, ou seja, um array. Como consigo pegar o campo certo ou o que devo fazer para evitar esta duplicidade de campos ? Eu identifiquei o problema usando o método request.getParameterValues(name) no seguinte código abaixo no início de cada página. Enumeration e = request.getParameterNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = request.getParameter(name); System.out.println(name + = + value); String x[] =request.getParameterValues(name); System.out.println( x:+x.length); for(int i=0;ix.length;i++){ System.out.println(x[+i+]:+x[i]); } } Obrigado pela ajuda, []s Marcus Augusto -- 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!? Listen to your Yahoo! Mail messages from any phone. http://phone.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] capturar
Meu, que tal ser um pouquinho mais especifico. Que tipo de aplicacao voce esta escrevendo? Web (servlet, jsp)?, GUI (Swing ou AWT)? Console? ... Ricardo Munhoz Santiago --- Fernando C. Felix [EMAIL PROTECTED] wrote: como eu faço para capturar um valor digitado pelo usuario??? Fernando __ Do You Yahoo!? Listen to your Yahoo! Mail messages from any phone. http://phone.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] Leitura de dados pela COM1
Use a Java COMM API http://java.sun.com/products/javacomm/ --- [EMAIL PROTECTED] wrote: Prezados companheiros, Eu tenho um celular ligado à porta COM com um cabo ao meu micro. Sou iniciante em JAVA e preciso desenvolver uma rotina com urgência, que capture o número de telefone que está sendo recebido pelo bina (olho mágico) do celular conectado ao micro. A rotina somente precisará, pegar essa string que contém o número do telefone que está aparecendo no aparelho e gravar num arquivo TXT. Alguém poderia me ajudar nesse caso ? Agradeço a atenção dos amigos, []'s, Anderson Brazão. -- Abra grátis sua conta no StarMedia Email. Inscreva-se agora mesmo! http://www.br.starmedia.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] - __ Do You Yahoo!? Listen to your Yahoo! Mail messages from any phone. http://phone.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] Controlando o tamanho de um arquivo !!
Você pode usar o Log4J que é um framework para log muito legal e opensource suportado pelo grupo apache http://jakarta.apache.org/log4j/docs/index.html Se nao quiser olhar o Log4J de uma olhada no codigo, comecando pela classe org.apache.log4j.FileAppender Ricardo Munhoz Santiago --- Alan Alexandre da Silva [EMAIL PROTECTED] wrote: Pessoal, minha aplicação gera arquivos de log. O problema é que os arquivos podem ficar grandes demais, sendo necessário transformá-los em backup. Alguém já trabalhou com isso ?! Alan __ Do You Yahoo!? Listen to your Yahoo! Mail messages from any phone. http://phone.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] VEJAM ESSA - C#
Giovani, sinto dizer, mas o autor está completamente certo sobre dois os pontos que você levantou. Java não suporta enum. Se isso é bom ou ruim para a linguagem é outra discussão. A interface Enumeration à qual você se referiu não tem absolutamente nada a ver com o tipo enum originalmente definido na linguagem C. Claro que existe formas de construir uma estrutura parecida, e até mais elegante em java. Um bom artigo sobre isso é: http://www.javaworld.com/javaworld/javatips/jw-javatip27.html Sobre propriedades, de novo, java não tem suporte EXPLICITO na linguagem a isso. A specificação JavaBeans permite o uso de BeanInfo para descrever as propriedades do seu JavaBean. Voce também pode usar métodos no padrão getXXX e setXXX que serão interpretados por ferramentas que aceitam a especificação como propriedades. Mas não existe o conceito explicito de propriedades em java. Contudo o cara realmente erra feito em muitos pontos como ao dizer que em Java nem todas as Classes derivam de um ancestral comum. Implicitamente toda a estrutura de herança em java começa com java.lang.Object Enfim, esse foi um péssimo artigo! Ricardo Munhoz Santiago --- Giovani Salvador [EMAIL PROTECTED] wrote: Pessoal, o link abaixo contém uma comparação ridícula entre C# e Java. O autor do artigo, além de demostrar falta total de conhecimento em java em alguns ítens, puxa completamente a corda para o lado eternamente proprietário Microsoft. O comparativo é bom para ver como esse sujeito tem total desconhecimento sobre java. Alguns exemplos: Fala que java não possui Enum (o que é o objeto enumeration então???) e não possui propriedades. É de doer, bom para dar umas risadas. http://www.microsoft.com/brasil/msdn/colunas/falandoc/col_falandoc_2.asp ** Giovani Salvador http://pagina.de/siglas (Siglas de informática) PROCERGS - Cia. de Processamento de Dados do Estado do Rio Grande do Sul Setor TSI - Tecnologia para Sistemas de Informação ICQ #44904309 ** -- 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!? Listen to your Yahoo! Mail messages from any phone. http://phone.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] Daemon Threads.
Dê uma olhada na documentação http://java.sun.com/j2se/1.3/docs/api/java/lang/Thread.html#setDaemon(boolean) A máquina virtual termina quando todas as threads ativas são do tipo daemon. Daemon threads servem para suportar user threads. Se não há mais user threads, a maquina virtual termina --- Paulo R. Panhoto [EMAIL PROTECTED] wrote: Pessoal, uma dúvida: O que caracteriza uma daemon thread, e portanto, a diferencia de uma ordinária? Grato -- 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!? Listen to your Yahoo! Mail messages from any phone. http://phone.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] printStackStrace para string
import java.io.*; ... Exception e = ...; StringWriter writer = new StringWriter(); e.printStackTrace(new PrintWriter(writer)); String stackTrace = writer.toString(); ... Ricardo Munhoz Santiago --- Luiz Fernando [EMAIL PROTECTED] wrote: Alguem ai sabe como fazer para capturar o printStackTrace () e guardar o resultado em uma String ? Obrigado, LF __ AcessoBOL, só R$ 9,90! O menor preço do mercado! Assine já! http://www.bol.com.br/acessobol -- 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!? Listen to your Yahoo! Mail messages from any phone. http://phone.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] Executar programa externo
Isso depende do grau de interação que você deseja entre os dois programas. Se você só quiser chamar um programa externo dê uma olhada nas classes Runtime e Process do pacote java.lang Se você quiser uma comunicação mais intensa, pode pensar em CORBA ou uma interface de comunicação via sockets (TCP/IP) Ricardo Munhoz Santiago --- Henrique Rodrigo T. da Silva [EMAIL PROTECTED] wrote: Ola, Gostaria de saber se existe alguma forma de executar um programa que nao tenha sido feito em Java. Se existe, como eu poderia fazer isso. Obrigado pela atencao []s. Henrique Rodrigo -- 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!? Listen to your Yahoo! Mail messages from any phone. http://phone.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] Comunicação entre servlets
Uma outra opção, bem mais simples é simplesmente encaminhar ou incluir o resultado do processamento de outros servlets no inicial. Exemplo: import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class MainServlet extends HttpServlet { private Map mapping; private void init(ServletConfig config) throws ServletException { mapping = new Hashtable(); // thread safe Map implementation mapping.put(doIt, do/it/servlet); mapping.put(doThat, do/that/ThatServlet); } public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { String action = req.getParameter(action); String servletUrl = (String) mapping.get(action); RequestDispatcher dispatcher = req.getDispatcher(servletUrl); dispatcher.forward(req, resp); // dispatcher.include(req, resp); Veja qual se adequa melhor ao seu caso } } Notas o codigo nao foi testado e pode nao compilar ou funcionar logo de cara, mas eh um exemplo. Pesquise as classes na documentacao da api de servlets http://java.sun.com/products/servlet/2.2/javadoc/index.html Ricardo Munhoz Santiago --- Claudio Miranda [EMAIL PROTECTED] wrote: Helio, de maneira simples, você pode usar o HttpUnit [http://httpunit.sourceforge.net] exemplo de código: WebRequest request; WebResponse response; WebConversation conversation = new WebConversation(); request = new GetMethodWebRequest(http://eap.netbeans.com/eap/index.html; ); response = conversation.getResponse( request ); System.out.println( response.getText() ); WebForm loginForm = response.getForms()[0]; request = loginForm.getRequest(); request.setParameter( name, master ); response = conversation.getResponse( request ); System.out.println( response ); o HttpUnit interage com protocolo http, simulando um cliente. Mas verifique se você _precisa_ conversar somente em http, pense em isolar os metodos/classes que se queira em um servlet. Pois assim, você diminue o acoplamento no nivel de apresentação de seu sistema. Claudio Miranda -- Helio Andrade - wrote: Olá, pessoal ! Gostaria de obter a ajuda de vcs para implementar a solução descrita abaixo: Tenho um formulário HTML que chama um servlet que por sua vez chama outros servlets dependendo da opção selecionada do formulário. Alguém tem idéia como fazer isto ? Qualquer ajuda será bem vinda. []´s Hélio Andrade _ Do You Yahoo!? Get your free @yahoo.com address at http://mail.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] - __ Do You Yahoo!? Listen to your Yahoo! Mail messages from any phone. http://phone.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] Reloading de Classes
Oi Paulo, defina seu proprio ClassLoader extendendo a classe java.lang.ClassLoader C:\jdk1.3.1\docs\api\java\lang\ClassLoader.html --- Paulo Simao [EMAIL PROTECTED] wrote: E ai Pessoal! To com o seguinte problema: Desejo recarregar a classe do arquivo .class toda vez que for necessária uma nova instância desta (Entendam, preciso atualizar as classes dinamicamente sem precisar restartar a máquina virtual Java). Valeu, P.O. -- 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!? Listen to your Yahoo! Mail messages from any phone. http://phone.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: [SouJava-J] JAR files and Configuration
Ok, decobri como fazer ... Se voce quer carregar um arquivo de resource qualquer, mesmo que ele esteja dentro do JAR onde sua classe estah empacotada, basta usar a seguinte tecnica (que funciona em aplicacoes, applets e java 2, bem como jdk 1.1.x). basta usar o metodo getResource da classe CLASS. Veja, nao adianta usar o ClassLoader.getSystemResource (String), nao vai funcionar num applet. por exemplo getClass ().getResource ("conf.properties"); ou getClass ().getResource ("/com/eversystems/application/someapp/con.properties"); A syntax eh importante, se voce nao comecar o caminho com /, o metodo ira procurar a partir do package em que a classe que invocou o metodo getResource estah. Para especificar o path completo, comece com / Espero que a informacao seja util a todos como foi para mim... Um abraco Ricardo Munhoz Santiago SUN Ceritified Programmer for the JAVA 2 Platform Eversystems (Research and Development) -Original Message- From: Ricardo Santiago [mailto:[EMAIL PROTECTED]] Sent: Tuesday, February 29, 2000 6:53 PM To: [EMAIL PROTECTED] Subject: [SouJava-J] JAR files and Configuration Alguem conhece algum documento que descreve como ler um arquivo de properties que esta dentro de um jar? Imagine o seguinte, tenho uma classe X.class e um arquivo de propriedades X.properties, os dois dentro de um arquivo jar X.jar Como eu faco para que a classe X.class possa ler o arquivo X.properties? Imagine que a X.class pode ser um Applet, ou qualquer coisa ... (implicacoes de seguranca) Faleu a todos --- 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] [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] - --- 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] [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] -
RE: [SouJava-J] RCs do JDK
Dalton, RC significa Release Candidate Nao existe RC1, 2, 3, 4 do JDK1.2.2, elas existiam para o JDK1.2 quando ele nao tinha uma production release. Isso significa que o software estava amadurecendo e nao deveria ser usado em ambientes de producao. A versao JDK1.2.1 java era uma release de producao. A versao JDK1.2.2 tem alguns bug fixes, e eh uma release de producao tambem A versao JDK1.3 esta em beta, talvez ela nao tenha tantas RCs como teve a versao 1.2, isso se da porque da versao 1.1 para a 1.2 hoveram MUITAS mudancas e adicoes, tanto que ate o nome da plataforma mudou de JAVA para JAVA 2 um abraco Ricardo Munhoz Santiago SUN Ceritified Programmer for the JAVA 2 Platform Eversystems (Research and Development) www.eversystems.com.br -Original Message- From: Dailton Santana de Almeida [mailto:[EMAIL PROTECTED]] Sent: Friday, March 24, 2000 9:46 AM To: SouJava Subject: [SouJava-J] RCs do JDK Qual a diferença entre o JDK 1.2.2 RC1, RC2, RC3, RC4? Obrigado. Dailton. -- Dailton Santana de Almeida mailto:[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] [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] - --- 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] [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] -
JAVA CHEGA DESTA PALHACADA (Adeus Jaka Paladium)----RE: [SouJava-J] ASP, Java, DHTML
Cara, Se manda, nao ta dando mais pra te aturar ... Pelo amor de Deus organizadores desta lista, tirem este cara daqui ... em apenas 3 dias ele ja provocou um tremendo tumulto na lista com mensagens sobre CRACKS, ASP,FLASH e DHTML, TUDO MENOS JAVA. Escuta aqui cara, some desta lista antes de sereliminado que fica melhor ok ... Existem n listas e news sobre as coisas que voce quer saber, assine um destes ... Eu simplesmente nao aguento mais... Se continuar a existir este tipo de gente na lista, na boa eu acho que nao vai sobrar um profissional qualificado que de suporte a lista. Aproveitando, pessoal, quando alguem disser que tem uma apostila para enviar pra quem quiser (mesmo que seja de JAVA), os interessandos por favor mandem os e-mails DIRETAMENTE PARA A PESSOA, e nao para a lista, isto melhora o nivel da lista, ninguem quer receber 100 e-mail num dia, dos quais 50 sao "tambem quero a apostila", 20 sao sobre ASP e 10 sobre CRACKS, das outras 20, 18 SAO perguntas que estao no tutorial da sun, e as outras 2 podem ser encontradas facilmente na documentacao JAVADOC que vem com o JDK ... Na boa, vamos fazer desta lista um lista decente, onde possamos pedir ajuda PARA PROBLEMAS QUE NAO CONSEGUIMOS RESOLVER (depois de tentarmos, lermos o tutorial, olharmos em sites de auxilio, como o javaman e outros ...). E acima de tudo, que sejam problemas sobre JAVA. Pessoas que nao estejam dispostas a colaborar com a lista de forma produtiva devem ser eliminadas... Gostaria que o pessoal da organizacao pensasse nisso. Para os que estao mandando perguntas muito obvias: Como aprender java, como converter int to string, bla bla bla, ai vai uma lista de lugares onde voces podem ler artigos e procurar solucoes antes de manderem as perguntas pra lista: www.gamelan.com java.sun.com.br developer.java.sun.com.br www.javaworld.com www.javareport.com etc ... Claro que a lista eh para ajudar a esclarecer duvidas, mas vamos manter nossas duvidas num nivel aceitavel. Quem tiver um problema estranho e conseguir solucionar, tambem pode compartilhar a ideia com a lista. Espero que as coisas mudem, ou esta lista esta destinada a um fracasso total... Ja faz tempo que as coisas deviam ter entrado nos eixos ... -Original Message-From: Jaka Paladium [mailto:[EMAIL PROTECTED]]Sent: Friday, March 24, 2000 7:51 AMTo: [EMAIL PROTECTED]Subject: [SouJava-J] ASP, Java, DHTML Onde posso conseguir material sobre Java, DHTML e Principalmente ASP? Jaka Paladium
RE: JAVA CHEGA DESTA PALHACADA (Adeus Jaka Paladium)----RE: [SouJava-J] ASP, Java, DHTML
OK pessoal, ninguem precisa da certificacao da sun pra participar (nao sei da onde voce tirou essa Nelson), contudo espera-se que a pessoa que vai colocar uma duvida na lista tenha PELO MENOS lido a documentacao e o tutorial antes de fazer perguntas OBVIAS. Veja bem NINGUEM nasceu SABENDO, mas colocar uma pergunta na lista nao eh a unica forma de aprender. Embora possa parecer comodo colocar uma pergunta na lista que ja esteja no tutorial da sun ou na documentacao de java, isso eh uma faca de dois gumes, pois os caras que estao aqui para responder perguntas vao acabar se enchendo, e quem vai responder as perguntas mais dificeis se todos os que respondiam se foram? Desde que esta lista se iniciou os organizadores ja CANSARAM de falar, ANTES DE COLOCAR UMA PERGUNTA NA LISTA VEJA SE A RESPOSTA NAO ESTA NO TUTORIAL, OU NA DOCUMENTACAO. Meus amigos, isso eh obvio. Quem nao fizer isso esta com preguica de procurar. O material esta a disposicao e voce vai acabar conseguindo achar a resposta mais rapido do que esperando uma resposta via e-mail. Eh soh bom senso! Quando digo vamos elevar o nivel da lista, eu quero dizer, vamos sumir com os e-mails idiotas que nao tem nada a ver com JAVA e com esta LISTA, e eliminar que as perguntas que tem respostas acessiveis a todos NO TUTORIAL e na DOCUMENTACAO, sejam perguntadas VEZ APOS VEZ. Quem entrou agora na lista pode nao saber, mas a pergunta: como converter um int para string ja apareceu TROCENTAS vezes nesta lista. E o pior eh que este tipo de pergunta acaba recebendo TROCENTAS respostas, quando devia receber apenas uma: veja o tutorial na pagina X. Devemos diminuir a quantidade de mensagens na lista MAS AUMENTAR o valor da mesma. Pensem nisso! -Original Message-From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]Sent: Friday, March 24, 2000 1:14 PMTo: [EMAIL PROTECTED]Subject: Re: JAVA CHEGA DESTA PALHACADA (Adeus Jaka Paladium)RE: [SouJava-J] ASP, Java, DHTML Acho justo a exclusão de pessoas que conturbem a lista ou que gerem discussões de matérias off-topic. Agora, quanto a se estabelecer o nível de perguntas...ah, ah, ah..só mesmo rindo. Ninguém nasceu sabendo, o que é trivial para alguns, talvez não seja para muitos outros. Quando assinei a lista, não existia nenhuma informação sobre o nível de discussão ou queeu precisaria ter acertificação da Sun para participar. - Original Message - From: Ricardo Santiago To: [EMAIL PROTECTED] Sent: Wednesday, March 01, 2000 11:24 AM Subject: JAVA CHEGA DESTA PALHACADA (Adeus Jaka Paladium)RE: [SouJava-J] ASP, Java, DHTML Cara, Se manda, nao ta dando mais pra te aturar ... Pelo amor de Deus organizadores desta lista, tirem este cara daqui ... em apenas 3 dias ele ja provocou um tremendo tumulto na lista com mensagens sobre CRACKS, ASP,FLASH e DHTML, TUDO MENOS JAVA. Escuta aqui cara, some desta lista antes de sereliminado que fica melhor ok ... Existem n listas e news sobre as coisas que voce quer saber, assine um destes ... Eu simplesmente nao aguento mais... Se continuar a existir este tipo de gente na lista, na boa eu acho que nao vai sobrar um profissional qualificado que de suporte a lista. Aproveitando, pessoal, quando alguem disser que tem uma apostila para enviar pra quem quiser (mesmo que seja de JAVA), os interessandos por favor mandem os e-mails DIRETAMENTE PARA A PESSOA, e nao para a lista, isto melhora o nivel da lista, ninguem quer receber 100 e-mail num dia, dos quais 50 sao "tambem quero a apostila", 20 sao sobre ASP e 10 sobre CRACKS, das outras 20, 18 SAO perguntas que estao no tutorial da sun, e as outras 2 podem ser encontradas facilmente na documentacao JAVADOC que vem com o JDK ... Na boa, vamos fazer desta lista um lista decente, onde possamos pedir ajuda PARA PROBLEMAS QUE NAO CONSEGUIMOS RESOLVER (depois de tentarmos, lermos o tutorial, olharmos em sites de auxilio, como o javaman e outros ...). E acima de tudo, que sejam problemas sobre JAVA. Pessoas que nao estejam dispostas a colaborar com a lista de forma produtiva devem ser eliminadas... Gostaria que o pessoal da organizacao pensasse nisso. Para os que estao mandando perguntas muito obvias: Como aprender java, como converter int to string, bla bla bla, ai vai uma lista de lugares onde voces podem ler artigos e procurar solucoes antes de manderem as perguntas pra lista: www.gamelan.com java.sun.com.br developer.java.sun.com.br www.javaworld.com www.javareport.com etc ... Claro que a lista eh para ajudar a esclarecer duvidas, mas vamos manter nossas duvidas num nivel aceitavel. Quem tiver um problema estranho e conseguir solucion
RE: [SouJava-J] ServLets
Claro que sim: http://java.sun.com/products/servlet Aqui tem o TOMCAT, pra voce rodar os servlets, bem como a api e a documentacao http://www.servlets.com Bastante exemplos e resources Alem disso tem um link para useful urls que vao te levar a outros sites um abraco. Ricardo Munhoz Santiago SUN Ceritified Programmer for the JAVA 2 Platform Eversystems (Research and Development) www.eversystems.com.br -Original Message- From: Alex Soares [mailto:[EMAIL PROTECTED]] Sent: Friday, March 24, 2000 2:36 PM To: [EMAIL PROTECTED] Subject: [SouJava-J] ServLets Ola pessoal , estou querendo fazer alguns servlets para aprender e roda-los alguem pode me dizer onde encontro o material necessario para isso. Muito Obrigado. __ Do You Yahoo!? Talk to your friends online with Yahoo! Messenger. http://im.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] [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] - --- 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] [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] -
[SouJava-J] JAR files and Configuration
Alguem conhece algum documento que descreve como ler um arquivo de properties que esta dentro de um jar? Imagine o seguinte, tenho uma classe X.class e um arquivo de propriedades X.properties, os dois dentro de um arquivo jar X.jar Como eu faco para que a classe X.class possa ler o arquivo X.properties? Imagine que a X.class pode ser um Applet, ou qualquer coisa ... (implicacoes de seguranca) Faleu a todos --- 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] [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] -
RE: [SouJava-J] Problemas com RMI
take it easy man! veja bem a diferenca entre java -Djava.rmi.server.codebase="http://localhost:8080/mysrc/HelloImpl" e java -Djava.rmi.server.codebase=http://localhost:8080/mysrc/ HelloImpl embora a barra seja obrigatoria no final do codebase (sei la se eu coloquei isso no meu exemplo), voce NAO pode deixar o nome da classe como parte da propriedade, que eh o que ocorre no caso 1. Alem disso, eu disse pro cara usar o applet viewer para testar localmente, isso significa que NAO eh necessario o uso de um webserver. Veja bem, estamos transformando um problema simples em discussao, se a propriedade codebase nao estiver setada, vai acontecer o que ja foi sitado por nos dois, rmiregistry vai querer o stub do objeto remoto quando voce fizer um bind nele, e nao achando vai dar erro. Quando ao pdf, acho uma boa coisa voce disponibilizar em algum lugar que a lista possa acessar (embora eu mesmo ja tenha), mas qualquer um que entrar em http://java.sun.com/products/jdk/rmi/, vai encontrar um monte de informacoes, inclusive a especificacao que fornece os detalhes da coisa. -Original Message- From: Luis Fernando [mailto:[EMAIL PROTECTED]] Sent: Wednesday, March 22, 2000 1:53 AM To: [EMAIL PROTECTED] Subject: RE: [SouJava-J] Problemas com RMI Meu caro, Agradeco pelos comentarios, mas o motivo de eu ter dado esse exemplo, foi pelo fato de jah ter executado o problema assim e TER FUNCIONADO. Falando em erro, sua opcao para fazer o acesso localmente eh totalmente impossivel, pois se trata de uma Applet que NAO PODE SE COMUNICAR AO NAO SER COM O SERVIDOR QUE A ORIGINOU.O uso do jswdk eh indispensavel nesse caso. A sintaxe no comando que voce diz nao citar a classe a ser ivocada, cita claramente o arquivo HelloImpl.class NAO?!?! java -Djava.rmi.server.codebase="http://localhost:8080/mysrc/HelloImpl"- Que por sinal foi tirada do tutorial de rmi da sun que segue abaixo: "The following command shows how to start the HelloImpl server, specifying this property: java Djava.rmi.server.codebase=http://myhost/~myusrname/codebase/ examples.hello.HelloImpl Note The trailing / in the codebase URL must be specified. A stub class is dynamically loaded into a clients virtual machine only when the class is not already available locally." Ao que me parece ao localizar a classe no servidor HelloImpl, automaticamente procura pelo stub no mesmo diretorio, que tambem eh encontrado(desde que esteja lah, of course). Tutorial esse que tenho em pdf e terei prazer em enviar a lista se for de interesse de todos. Later, Luis Fernando. Pessoal, estamos confundindo uma coisa basica... a linha de comando: java -Djava.rmi.server.codebase="http://localhost:8080/mysrc/HelloImpl E que estah TOTALMENTE ERRADA! O erro que o nosso amigo esta tendo eh no momento de executar o objeto servidor, isto se da por que o rmiregistry nao consegue localizar o stub, e isso ocorre por que a propriedade java.rmi.server.codebase esta totalmente errada, alem disso, a sintaxe do comando nem sequer indica a classe a ser invocada. Por isso, como ja disso no meu primeiro e-mail sobre o assunto, ai vai a resposta para ESTE problema (voce provavelmente vai ter outros depois de resolver este) java -Djava.rmi.server.codebase=file:///c:/mysrc HelloImpl A propriedade esta setada para o seu diretorio c:\mysrc. Isso indica que os arquivos de classes, inclusive os stubs devem estar neste diretorio. O uso de file:/// eh feito visto que voce nao esta usando nenhum servidor web. Isso significa que se voce rodar um aplicacao cliente nesta mesma maquina, ela vai funcionar. Nao, Nao vai. O acesso eh feito por uma Applet.Tem que ser remoto. Se voce criar um jar com uma aplicacao cliente que inclua o stub e rodar de outra maquina, ela vai funcionar. CONTUDO, se voce tentar rodar uma aplicacao cliente em uma maquina que NAO CONTENHA O STUB NO CLASSPATH, NAO VAI FUNCIONAR. Isso acontece por que o download dinamico do stub necessita do protocolo http, ou pelo menos uma parte dele, por isso voce deveria usar um servidor web. Caso voce consiga um servidor web (tem varios disponiveis por ai de graca), voce devera mudar a propriedade java.rmi.server.codebase para algo tipo: java.rmi.server.codebase=http://127.0.0.1:8080/mysrc. Voce devera substituir o endereco, a porta e o diretorio pelos que estiverem sendo usados por voce. Abraco, boa sorte, e se tiver mais duvidas, mande outro e-mail bem detalhado! __ Get Your Private, Free Email at http://www.hotmail.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] [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] - --- LISTA SOUJAVA ---
RE: [SouJava-J] BestFriends
Title: Bestlife C`mom man, what does it have to do with JAVA... -Original Message-From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]Sent: Wednesday, March 22, 2000 11:17 AMTo: [EMAIL PROTECTED]; [EMAIL PROTECTED]; [EMAIL PROTECTED]; [EMAIL PROTECTED]; [EMAIL PROTECTED]; [EMAIL PROTECTED]Subject: [SouJava-J] BestFriendsVeja só o que eu descobri na INTERNET: Um site aqui no Brasil que dá prêmios! É simples e TOTALMENTE grátis! Você ganha pontos de diversas maneiras e troca os pontos por prêmios em leilões e sorteios. E ainda pode ganhar prêmios instantâneos no BestFlash. Se você ainda indicar mais amigos a gente ganha ainda mais. Agora tem uma nova promoção, até o dia 17 de Abril de 2000, quem indicar mais amigos leva uma Honda Biz OKm. Se inscreva já e confirme a minha indicação. Vamos ganhar juntos. O endereco é: http://www.bestlife.com.br Bons clicks pra você. sandronp [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] [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] -
RE: [SouJava-J] Problemas com RMI
Pessoal, estamos confundindo uma coisa basica... a linha de comando: java -Djava.rmi.server.codebase="http://localhost:8080/mysrc/HelloImpl E que estah TOTALMENTE ERRADA! O erro que o nosso amigo esta tendo eh no momento de executar o objeto servidor, isto se da por que o rmiregistry nao consegue localizar o stub, e isso ocorre por que a propriedade java.rmi.server.codebase esta totalmente errada, alem disso, a sintaxe do comando nem sequer indica a classe a ser invocada. Por isso, como ja disso no meu primeiro e-mail sobre o assunto, ai vai a resposta para ESTE problema (voce provavelmente vai ter outros depois de resolver este) java -Djava.rmi.server.codebase=file:///c:/mysrc HelloImpl A propriedade esta setada para o seu diretorio c:\mysrc. Isso indica que os arquivos de classes, inclusive os stubs devem estar neste diretorio. O uso de file:/// eh feito visto que voce nao esta usando nenhum servidor web. Isso significa que se voce rodar um aplicacao cliente nesta mesma maquina, ela vai funcionar. Se voce criar um jar com uma aplicacao cliente que inclua o stub e rodar de outra maquina, ela vai funcionar. CONTUDO, se voce tentar rodar uma aplicacao cliente em uma maquina que NAO CONTENHA O STUB NO CLASSPATH, NAO VAI FUNCIONAR. Isso acontece por que o download dinamico do stub necessita do protocolo http, ou pelo menos uma parte dele, por isso voce deveria usar um servidor web. Caso voce consiga um servidor web (tem varios disponiveis por ai de graca), voce devera mudar a propriedade java.rmi.server.codebase para algo tipo: java.rmi.server.codebase=http://127.0.0.1:8080/mysrc. Voce devera substituir o endereco, a porta e o diretorio pelos que estiverem sendo usados por voce. Abraco, boa sorte, e se tiver mais duvidas, mande outro e-mail bem detalhado! -Original Message- From: Luis Fernando [mailto:[EMAIL PROTECTED]] Sent: Tuesday, March 21, 2000 4:52 PM To: [EMAIL PROTECTED] Subject: Re: [SouJava-J] Problemas com RMI From: "emilio lemos" [EMAIL PROTECTED] Reply-To: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Subject: Re: [SouJava-J] Problemas com RMI Date: Tue, 21 Mar 2000 12:10:03 GMT Oi Luis Muito Obrigado por me ajudar. Todos os programas estao dentro do diretorio C:\MYSRC Entao realizo os segintes passos: cd\mysrc start rmiregistry java -Djava.rmi.server.codebase=file:c:/mysrc/HelloImpl Neste caso aparece uma mensagem de erro indicando sintaxe incorreta Ai eu mudo para o comando abaixo(Observe o -D afastado) java -D java.rmi.server.codebase=file:C:/mysrc/HelloImpl Aparece o erro Exception in thread "main" java.lang.NoClassDefFoundError: java/rmi/server/codebase=file: Observe que eu nao tenho um servidor Web local como o Personal Web Server ou o Website. Nao sei se o problema esta ai. Oi emilio, O problema eh justamente esse. Uma applet soh pode se comunicar com o servidor do qual ela foi originada.Eh uma norma de seguranca nos browsers. No RMI,o proprio nome jah diz, remote method invocation,onde se acessa um metodo de outra aplicacao remotamente(cliente-servidor). Para resolver baixe o jswdk na sun, depois coloque o diretorio mysrc no servidor e execute o comando: java -Djava.rmi.server.codebase="http://localhost:8080/mysrc/HelloImpl Isso deve resolver. Nao esqueca que o arquivo de html da sua applet tambem tem que estar no servidor, pois se o browser identificar uma tentativa de comunicacao entre a applet e outra aplicacao localmente, uma SecurityException eh gerada. Um abraco, Luis Fernando. __ Get Your Private, Free Email at http://www.hotmail.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] [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] - --- 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] [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] -
RE: [SouJava-J] Problemas com RMI
OK, veja bem, a propriedade java.rmi.server.codebase deve ser preenchida com um endereco de rede, e nao com o nome da classe que voce quer executar. A linha de comando que voce enviou: O comando java -D java.rmi.server.codebase=HelloImpl da o seguinte erro: Esta errada. A propriedade codebase deve conter o endereco de onde os clientes deste objeto servidor poderao fazer download das classes necessarias (como stubs, objetos de excecao, e assim por diante...) Por isso, uma forma generica de executar o commando seria: java -Djava.rmi.server.codebase=[endereco da sua maquina + caminho ate o classpath] HelloImpl *Exemplo de [endereco da sua maquina + caminho ate o classpath] http://minhamaquina:minhaporta/minhasclasses/ No caso da sua aplicacao, o cliente nao conseguira fazer download dos stubs se voce nao usar um servidor web, ou pelo menos um pseudo webserver que implemente as requisicoes necessarias para fazer download dinamico das classes. Ainda assim, voce pode ter problemas pra executar um applet dependendo do browser. Por exemplo, o IE nao suporta RMI. Se voce quiser testar o applet, use o appletviewer que acompanha o JDK. Espero que estas dicas ajudem um pouco. -Original Message- From: emilio lemos [mailto:[EMAIL PROTECTED]] Sent: Monday, March 20, 2000 5:17 PM To: [EMAIL PROTECTED] Subject: [SouJava-J] Problemas com RMI Prezados Amigos Estou enfrentando alguns problemas para fazer funcionar um exemplo envolvendo RMI. De acordo com o exemplo, o resultado sera a apresentacao do texto "Hello World" num browser que contem um applet. Aqui estao alguns detalhes de minha configuracao: Uso o Windows 95 JDK1.2 Diretorio onde foram gravados os fontes : C:\MYSRC Nao tenho nenhum servidor Web local instalado. A compilacao dos codigos fontes funciona sem problemas javac Hello.java HelloImpl.java HelloApplet.java A geracao dos "skeletons" "stubs" funciona ok atraves do comando rmic HelloImpl O comando start rmiregistry funciona ok O comando java -D java.rmi.server.codebase=HelloImpl da o seguinte erro: Exception in thread "main" java.lang.NoClassDefFoundError: java/rmi/server/codebase=HelloImpl * Deste ponto eu nao passei O exemplo completo pode ser encontrado em http://java.sun.com/products/jdk/1.1/docs/guide/rmi/getstart.doc.html Agradeco qualquer colaboracao // Hello.java import java.rmi.Remote; import java.rmi.RemoteException; public interface Hello extends Remote { String sayHello() throws RemoteException; } // HelloImpl.java import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.RMISecurityManager; import java.rmi.server.UnicastRemoteObject; public class HelloImpl extends UnicastRemoteObject implements Hello { public HelloImpl() throws RemoteException { super(); } public String sayHello() { return "Hello World!"; } public static void main(String args[]) { // Create and install a security manager if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); } try { HelloImpl obj = new HelloImpl(); // Bind this object instance to the name "HelloServer" // Fiz uma mudanca nesta linha. A linha original e // Naming.rebind("//myhost/HelloServer",obj); Naming.rebind("//127.0.0.1/HelloServer", obj); System.out.println("HelloServer bound in registry"); } catch (Exception e) { System.out.println("HelloImpl err: " + e.getMessage()); e.printStackTrace(); } } } // HelloApplet.java import java.applet.Applet; import java.awt.Graphics; import java.rmi.Naming; import java.rmi.RemoteException; public class HelloApplet extends Applet { String message = "blank"; // "obj" is the identifier that we'll use to refer // to the remote object that implements the "Hello" // interface Hello obj = null; public void init() { try { obj = (Hello)Naming.lookup("//" + getCodeBase().getHost() + "/HelloServer"); message = obj.sayHello(); } catch (Exception e) { System.out.println("HelloApplet exception: " + e.getMessage()); e.printStackTrace(); } } public void paint(Graphics g) { g.drawString(message, 25, 50); } } // Hello.html HTML titleHello World/title center h1Hello World/h1 /center The message from the HelloServer is: p applet code="HelloApplet" width=500 height=120 /applet /HTML __ Get Your Private, Free Email at http://www.hotmail.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] [para sair da lista:
[SouJava-J] J2EE e DukesPetStore
Ol pessoal. J fiz vrios testes com a implementao de Referncia da Sun para J2EE. Contudo, estou com um pequeno problema ao tentar executar o exemplo DukesPetStore. Aps considerar todos os passos de configurao indicados no arquivo readne.txt que acompanha o exemplo, iniciar o J2EE, iniciar a DeployTool, eu tento abrir o arquivo estore.ear, que a aplicao em si. Contudo recebo a mensagem estore.ear is corrupted or cannot be read. Pensei o obvio, que o arquivo estava ferrado, mas creio que no seja isso, visto que eu fiz outro download e o problema persistiu. Da eu tentei examinar o arquivo na mo, usando a ferramenta Jar, e o arquivo est legal. Algum j passou por isso, ou tem alguma sugesto? Caso ningum tenha uma idia, eu vou tentar montar a aplicao na mo, mas o problema que isso vai levar um tempo que eu no posso perder. Ricardo Munhoz Santiago (CPM Sistemas)Sun Certified Programmer for the JAVA 2 Platform Come and get some !!!
Re: [SouJava-J] POO
Entao a heranca que vamos ter pode ser : Pessoa - Pessoa Fisica - Paciente - Medico Pessoa -Pessoa Juridica- Convenio Tenho apenas uma consideração neste respeito... Geralmente não é recomendável associar por herança um papel (role) que possa mudar. Vou exemplificar. Eu, Ricardo Munhoz Santiago sou uma pessoa física, que me formei médico e venho trabalhar neste hospital. Entro então como Medico. No meio do ano, fico doente e resolvo me internar neste mesmo hospital. Para ter uma ficha clinica preciso ser cadastrado como paciente. Já houve duplicação dos dados da classe Pessoa Fisica. Quando vamos falar de um papel desempenhado, a melhor coisa é usar de associação, não herança. No caso, a classe Medico deve estar associada a uma pessoa fisica, e da mesma forma a classe Paciente. Este é o típico caso onde o teste "é uma" pode enganar! Podemos dizer que um paciente "é uma" pessoa física, mas no fundo, paciente é apenas o estado em que a pessoa se encontra durante uma visita ao hospital, é só o papel que ela desempenha.! just my 2 cents! Ricardo Munhoz Santiago (CPM Sistemas) Sun Certified Programmer for the JAVA 2 Platform Come and get some !!! --- LISTA SOUJAVA --- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] -
Re: [SouJava-J] POO
Eu, Ricardo Munhoz Santiago sou uma pessoa física, que me formei médico e venho trabalhar neste hospital. Entro então como Medico. No meio do ano, fico doente e resolvo me internar neste mesmo hospital. Para ter uma ficha clinica preciso ser cadastrado como paciente. Já houve duplicação dos dados da classe Pessoa Fisica. Desculpa, mais nao entendi porque teria duplicacao ja que se pesquiso no cadastro pelas pessoas fisicas vou te achar (a generalizacao e' justamente pra evitar a duplicacao de informacao). A tua propria frase e incompativel. Na hora de criar uma nova instancia do Paciente que implica criar uma nova instancia da Pessoa Fisica descobriria a duplicacao. Ok. Você pode até descobrir a duplicação, mas e aí? O que você vai fazer? Vai deixar de cadastrá-lo como Paciente, ou vai apagar o cadastro dele como Médico? Você não pode ter os dois ao mesmo tempo, visto que eles são paralelos na árvore de herança ... A grande verdade é que este problema de design, na hora da programação geralmente é resolvido com duplicação. O que é péssimo, mas é melhor do que perder um cadastro para fazer outro! Por isso eu citei duplicação ... Que tal se definimos duas interfaces : IPaciente e IMedico (alguem me indique a sintaxe correta, por favor) e aplicamos elas na classe pessoa fisica? Sera melhor que a associacao? Porque? O sera melhor deixar como associacao mesmo? O modelo pede uma associação. O que você está sugerindo é grudar mais ainda, colocando Paciente, Medico e Pessoa Física Tudo junto. Se nós aplicarmos as interfaces IPaciente e IMedico à classe Pessoa, estamos dizendo que toda pessoa física tem responsabilidades de Médico e de Paciente, o que não é verdade! A associação é que permite o reuso! Imagine que amanhã seu sistema cresça, e você queira incluir a parte administrativa, incluindo outros tipos de funcionarios (Enfermeiros, Tecnicos, Administradores). Se você usar o primeiro modelo, vai ter uma subclasse de Pessoa Fisica para cada novo tipo. Mas o problema da multipla-exclusão ou duplicação continua. Se você usar o segundo modelo, irá criar + 3 interfaces e aplicá-las à classe paciente. Se usar ASSOCIAÇÃO irá criar + 3 classes independentes e fazer uma associação com a classe pessoa Física. Ricardo Munhoz Santiago (CPM Sistemas) Sun Certified Programmer for the JAVA 2 Platform Come and get some !!! --- LISTA SOUJAVA --- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] -
Re: [SouJava-J] POO
Quando falo em associacao, estou falando que a classe Medico nao conhece a classe PessoaFisica, nem a classe PessoaFisica conhece a classe Medico. Nenhuma delas tem um atributo com o tipo da outra. Existe entao, uma classe que ainda nao temos nome pra ela (poderia ser Roles) que representa a associacao e que ela sim, conhece as outras duas. Não necessariamente. Neste caso, na hora de implementar, a Classe Medico pode ter uma referencia da classe PessoaFisica e o mesmo no que diz respeito à classe Paciente. Contudo, podem haver atributos de seu interesse que pertençam ao relacionamento, daí vale a pena criar mais uma classe. Mais... Se eu tenho um Medico ( e so um medico) ou tenho um Paciente (e so um paciente), e nao tenho acesso ao Rol, e quero saber quem é a pessoa que a representa pois nao pode existir paciente ou medico sem pessoa, nao consigo. Não entendi o que você quis dizer Tente clarear um pouco mais! Come and get some !!! --- LISTA SOUJAVA --- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] -
[SouJava-J] So, What The Hell is OO
Bem, vi uma discusso sobre JAVA e OO, e resolvi perguntar: Ser que todos os que esto lendo isso, esto entendendo do que esto falando? Sim, porque todos disseram que muita gente no sabe nada de OO e programa em JAVA como se fosse Clipper, mas ningum disse efetivamente o que estes pobres infelizes devem fazer pra sair desta lama! Nem tao pouco vou dizer por que se no o e-mail vaio ficar GIGANTE. Mas gostaria de fazer uma simples indicao: Leiam: Applying UML and Patterns (Este livro MUITO bom) E lembrem-se OO e sobre DISTRIBUIO DE RESPONSABILIDADES, por isso o GRASP (General RESPONSIBILITY ASSIGNMENT Software Pattern) que se encontra no citado livro, j um bom comeo. Ricardo Munhoz Santiago (CPM Sistemas)Sun Certified Programmer for the JAVA 2 Platform Come and get some !!!
Re: [SouJava-J] JAAS
Sr*s Olá Miriam Gostaria de saber se alguem jah utilizou o JAAS e conseguiu executar o exemplo que eh fornecido. Segui todas as instrucoes mas nao estou conseguindo executar. Recebo sempre o seguinte erro: ... Este erro parece uma incompatibilidade entre versões do JDK, você percebeu que ele ocorre dentro do metodo defineClass da classe java.lang.ClassLoader? A especificação do JAAS exige que ele seja executado com o JDK1.3, que ainda está em beta ... Talvez você esteja usando o JDK1.2.2, que é uma release de produção, neste caso não vai funcionar. Se o problema não for esse, envie mais dados sobre o seu ambiente: *Sistema operacional, *versão JDK Obrigada a todos Miriam Ricardo Munhoz Santiago (CPM Sistemas) Sun Certified Programmer for the JAVA 2 Platform Come and get some !!! --- LISTA SOUJAVA --- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] -
[SouJava-J] RMI-IIOP and CORBA Services
Clients RMI-IIOP poderao acessar servidores CORBA. O servico de nomes CosNaming esta acessivel via JNDI. Contudo, outros servicos CORBA, como TradeService, terao de ser acessados da forma convencional, via java IDL, ou ha algum outro tipo de interface?
[SouJava-J] COMO SAIR DA LISTA SE ESQUECEU O USERNAME OU PASSWORD
Ok, pessoal, no vamos perder tempo sendo to severos com quem quer sair da lista e no sabe como. Tantas respostas sem objetivo como as que tenho visto s causam desgaste e enchem o e-mail com LIXO. Na verdade, se voc esquecer ser user name ou password, vai ficar difcil mesmo sair da lista. COMO SAIR DA LISTA SE ESQUECEU O USERNAME OU PASSWORD: Caso isso acontea, entre no site www.soujava.org.br, na primeira pgina, clique em INFO. No menu lateral selecione ENTRE EM CONTATO. Aparecer um form, escolha a rea Administrao do site, preencha o resto do form, e explique que quer sair da lista. Simples, no ? Ricardo Munhoz Santiago (CPM Sistemas)Sun Certified Programmer for the JAVA 2 Platform Come and get some !!!
Re: [SouJava-J] Livro BD, RMI, ...
Eu estou procurando um bom livro e/ou bons tutoriais, apostilas e etc, que fale de Banco de Dados em Java, acesso RMI, Email em Java... Porem estou meio perdido!! Uma sugestão é o site da Sun sobre estas APIS. Entre em www.java.sun.com/products e então, selecione na combo a API sobre a qual deseja informação. Estou recorrendo para a lista para receber sugestoes (Livros de preferencia). Sobre JDBC voce pode procurar um livro da editora O'reilly, que trata bem do assunto e ainda explica como fazer um framework (not that good) para acessar objetos de dados remotamente via RMI. O nome do livro eu não me lembro, mas procure por JDBC e editora O'Reilly, e será fácil achar. Agora como sugestão, dependendo do perfil de sua aplicação, talvez você possa usar EJB (J2EE). Vai poupar muito trabalho, contudo, vai exigir a aquisição de um middleware na solução final! Agradeco a todos antecipadamente... Nilton de Souza Ricardo Munhoz Santiago (CPM Sistemas) Sun Certified Programmer for the JAVA 2 Platform Come and get some !!! --- LISTA SOUJAVA --- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] -