| Autor |
Mensagem |
|
|
Olá
Procure por documentação sobre JNI. É possível carregar DLLs usando uma função intermediária. Se for no cliente você precisará de uma applet assinada ou com permissões abertas no java.policy. Se for no servidor o único problema pode ser de performance.
[]s
Luca
|
 |
|
|
Olá
Você pode usar um ClassLoader com criptografia para carregar as classes com trechos de código sensível. Estas classes deverão ser programadas para não permanecerem na memória mais do que o mínimo necessário em tempo de execução. No código todo pode usar um obfuscador. Nos trechos de código que a diretoria exige que permaneça em "C" por questões de segurança voce pode acessar por JNI.
[]s
Luca
|
 |
|
|
Olá
O uso indiscriminado de generics pode fazer com que o código fique bem mais dificil de ler e manter. Vejam o exemplo abaixo:
O código de algumas collections vai ficar mais limpo e principalmente com melhor possibilidade de verificações em tempo de compilação. Há outros casos de bom uso de generics, mas tenho até medo do que um programador de cabeça confusa pode fazer.
Não entendo bem porque a Sun resolveu investir na inclusão de tipos parametrizados no Java ao invés de consertar de vez as classes com erro como javax.comm ou outras que podem ser melhoradas. Nesta linha para mim seria melhor incluir AOP, pelo menos para padronizar as implementações.
O J2SDK 1.4 realmente veio melhorado com a inclusão de java.nio. Já o 1.5 promete generics coisa que eu posso muito bem viver sem.
[]s
Luca
|
 |
|
|
Olá
O Daniel perguntou se havia alguém aqui de 1966 (na verdade o artigo é de 1968, ver: http://www.acm.org/classics/oct95/).
Em 66 eu ainda estava no curso básico de engenharia. Mas em 68 escrevi meu primeiro programa como parte de um curso de programação analógica. Se não estou esquecido, servia para resolver uma equação diferencial resolvendo o crescimento de uma colônia de bactérias. Usei um computador analógico onde se programava ligando integradores e outros componentes em uma espécie de porta. Os resultados saiam em um osciloscópio eletrônico em forma de senoide.
Comecei com computação digital aprendendo Fortran ainda em 68. Em 69 muita gente usava Cobol. Na faculdade de engenharia da UFRJ usávamos Fortran em um fantástico IBM 1130 com 32Kbytes de memória. Era coisa muito boa mesmo, imagine que a ponte Rio Niteroi foi calculada em 1969 usando um igual só que com 8Kbytes (4Kbytes para o sistema operacional). Tinhamos um disco com 2K bytes. Abaixo um IBM1130:
Ou o mesmo IBM1130 a cores:
Leitora de cartões perfurados:
Impressora:
Em 1970 surgiu o Basic com sua codificação macarrônica. E também uma mistura de Fortran com Cobol chamado PL/1. Estas linguagens NÃO eram estruturadas. A codificação podia ficar horrível. Então muitos estudavam técnicas e métodos para facilitar a leitura dos códigos. Gente como Dijkstra e principalmente o inventor do Pascal, o suiço Niklaus Wirth.
Rotinas curtas, programação em módulos, uso restrito de GOTO, estas eram algumas leis do bom programador. Mas como você mesmo apontou as vezes era impossível deixar de usar o GOTO
Vou ficando por aqui, outro dia conto mais. Naquele tempo a gente resolvia sistemas de equações bem grandes usando um mínimo de recursos. Cálculo numérico e análise numérica eram conhecimentos básicos.
[]s
Luca
|
 |
|
|
Olá
Certo, separe os packages. Use a própria API Java como modelo. Vários critérios são válidos:
1) Em cada package uma família de classes com algo a ver entre si.
2) Em cada package uma árvore de classes relativas a uma determinada facilidade do sistema. Neste caso poderão existir vários subdiretórios:
Exemplos:
com.sua-empresa.seu-sistema.faturas.proxi
com.sua-empresa.seu-sistema.faturas.model
com.sua-empresa.seu-sistema.faturas.security
etc.
3) Packages separados de acordo com a probabilidade de futuro reaproveitamento.
É válido montar diferentes jars (wars e ears) contendo as mesmas classes, istó é, apontando para as mesmas classes. Quando atualizar uma destas classes, o ant (ou maven) perceberá, recompilará e montará todos os jars necssários.
Existe uma pessoa que conhece bem seu sistema e poderá dizer exatamente qual a melhor organização que ele deve ter: você!
Não importa se errar (desde que o sistema funcione), talvez seja até melhor. Assim poderá melhorar no futuro.
[]s
Luca
|
 |
|
|
Olá
Separe o que é cliente do que é servidor. As classes comuns ficarão em outros jars.
[]s
Luca
|
 |
|
|
Olá
Imaginando que usa Windows corrigi apenas seu web.xml
1) Seu web.xml que vai em %CATALINA_HOME%webappslivroWEB-INF
pode ficar assim:
Repare que apenas declarei web-app e eliminei o resto da linha <web-app> Mais tarde entenderá para que serve os parametros que retirei.
2) A sua classe BasicServlet foi colocada em:
%CATALINA_HOME%webappslivroWEB-INFclassescap01
3) Depois de startar o tomcat acessei: http://luca-note:8080/livro/myServlet
4) O resultado foi:
Starting service Tomcat-Standalone
Apache Tomcat/4.0.6
Starting service Tomcat-Apache
Apache Tomcat/4.0.6
Instanciando BasicServlet
Entrando no método INIT
Requisição pedida
É isso que esperava? Talvez não, pois em Service não chamou doGet. Em service depois de System.out.println("Requisição pedida"); inclua:
Vai ver na tela:
HELLO WORD!
MY FIRST SERVLET
[]s
Luca
|
 |
|
|
Olá
Não poderei ir à festa mas desejo a todos um feliz Natal e um ano de 2004 com saúde e muita grana entrando direto.
Para brincar um pouco cliquem nas renas deste cartão: http://web.icq.com/shockwave/0,,4845,00.swf
[]s
Luca
|
 |
|
|
Olá
1) Codificar:
Para codificar quase todo mundo usa as convenções dadas no documento Code Conventions for the Java Programming Language. Ver:http://java.sun.com/docs/codeconv/index.html
2) Best Practices
Seria muito bom que pelo menos um da equipe conheça o livro Effective Java. Ver: http://java.sun.com/docs/books/effective/
É possível baixar 4 capítulos em pdf. No site da Bani tem ótimos textos de partes importantes deste livro. Ver: http://www.java.blogger.com.br/
Se programam usando interfaces gráficas vejam: Java Look and Feel Design Guidelines em http://java.sun.com/products/jlf/index.html
Outros sites:
http://www.javapractices.com/index.cjp
http://www.precisejava.com/
http://www.geocities.com/javabestpractices/
3) Performance
Também um integrante da equipe precisa ter lido um livro de dicas de performance. O Java pode ser programado de forma a ficar terrivelmente lento. Alguém precisa orientar a equipe nas melhores práticas e como recomenda XP, as vezes refatorar. Eu sou meio que fanático por este tipo de livro e tenho um monte deles. Mas um está disponível em html. Ver: http://java.sun.com/docs/books/performance/1st_edition/html/JPTitle.fm.html
Visite também:http://www.java-performance-portal.org/index.html e http://www.javaperformancetuning.com/
4) Agilidade nas soluçõoes
Usar bem o google e o GUJ e manter um bom grupo de amigos no MIRC.
[]s
Luca
[]s
Luca
|
 |
|
|
Olá
A classe java.awt.Robot é uma das classes menos conhecidas do Java. Ela serve para simular tecladas ou movimentos do mouse com o objetivo de fazer demos que rodem sozinhas ou outras aplicações em que é preciso monitorar tudo o que o cliente faz.
Provavelmente o Ted estava pensando no método:
public BufferedImage createScreenCapture(Rectangle screenRect)
É uma questão de testar e ver se atende ao que precisa.
[]s
Luca
|
 |
|
|
Olá
Se pode usar JNI para acessar a API do Windows. PORÉM, só faça isto para usar funções de baixo nível que NÃO existem em Java. Por exemplo: usar uma DLL padrão para imprimir em uma impressora fiscal ou obter dados da máquina como MAC Address da placa de rede sem usar ipconfig.
Cada vez que você chama JNI, os parâmetros que estão sendo trocados com o método nativo precisam ser convertidos do formato interno de bytecodes Java para o formato interno entendido pela DLL e vice-versa na volta. Esta conversão tem um certo custo em termos de tempo de processamento. Não acredito em grandes otimizações no desempenho da sua aplicação só porque vai chamar direto métodos nativos.
As vezes se ganha muito mais performance com o uso correto de um array de bytes ao invés de uma String e o uso de StringBuffer onde não se pode deixar de usar String. JNI é para quebrar o galho e permitir comunicar com C ou DLLs, não server para performance.
[]s
Luca
|
 |
|
|
Olá
Pequeno problema com JTail:
This software is licensed for personal use only .
[]s
Luca
|
 |
|
|
Olá
Ganhe tempo concentrando-se no seu problema e deixando o tail fazer o papel dele. No ambiente Unix-like você já conhece o tail. No DOS use o Tail.exe que pode ser baixado de http://members.aol.com/_ht_a/bergert/DOSutil/DOSutil.htm
Achei no google outros utilitários que nunca usei em http://www.profsoftware.com/unixdos/ud09.htm
Não acho que seja útil a aplicação que descreveu mas há também tail para Windows, procure por tailme.
[]s
Luca
|
 |
|
|
Olá
Antes de detonar um autor estrangeiro a gente precisa saber como está no original. Há traduções terríveis aqui no Brasil. As vezes fico com pena de quem quer se dedicar em informática e não sabe ler inglês. Há um famoso livro de C de um consultor que vivia dando entrevistas no jornal no qual o cara traduziu TUDO e inventou um monte de termos que eu que sempre fui do ramo nunca tinha ouvido falar. Um outro caso é de um livro traduzido como Fundamentos de PHP em que a autora Julie Meloni colocou em seu site uma página renegando a tradução brasileira pois achava que o número de erros era tão grande que desvirtuaram sua obra.
O livro da Katty Sierra em português é muito bom para quem já sabe Java e consegue perceber os vários erros ou no mínimo incoerências. Isto que está citando talvez seja mais um exemplo mas eu já reparei outros.
Meu conselho: experimente, faça um teste se está em dúvida. Ou então procure confirmar em outro livro. Não confie cegamente em tudo que vê por aí como por exemplo estas bobagens que eu estou escrevedo agora depois de 6 choppes.
[]s
Luca
|
 |
|
|
Olá
Não sei se a esta altura já resolveu sua dúvida mas só vi hoje sua questão e respondo pois pode ser que ajude outros.
Seu problema estava aqui:
The task is an Ant optional task and optional.jar is absent
Fix: look for optional.jar in ANT_HOME/lib, download if needed
- The task was not built into optional.jar as dependent
libraries were not found at build time.
Ou seja, falta o jar com a task ftp
1) A task FTP não vem com ant, é preciso baixar netcomponents.jar de http://www.savarese.org/oro/downloads/index.html#NetComponents e colocar em ANT_HOME/lib. Ver: http://ant.apache.org/manual/install.html#librarydependencies
2) O uso de ftp deve estar de acordo com: http://ant.apache.org/manual/OptionalTasks/ftp.html
Os passos 1 e 2 resolvem seu problema. Como brinde incluo um exemplo que funciona para transferir um arquivo .tar:
[]s
Luca
|
 |
|
|