Jtiago.com

Java, Desenvolvimento Web, Tecnologia, tudo e mais um pouco…
Subscribe

Arquivos de ‘Java’

Tirando um Screenshot da Tela com Java

abril 11, 2007 By: Tiago Silveira Categoria: Java

Olá pessoal,
vou postar hoje um exemplo de como tirar um screenshot do desktop usando Java.
Ao contrario do que você pode estar pensando, tirar um screenshot e muito mais fácil do que parece, acompanhem o código comentado abaixo.

import java.*;
import javax.imageio.*;

/**
 * Exemplo de como tirar um screenshot em java.
 *
 * @author Tiago
 */

public class Screenshot {
    public static void main(String[] args) throws Exception {

        // Definindo o nome da imagem
        String nomeImagen = “desktop.png”;

        // Espera 2 segundos e tira o screenshot
        long tempoEspera = Long.parseLong(”2″) * 1000L;
        System.out.println(”Aguardando ” + (tempoEspera / 1000L) +
            ” segundo(s)…”);
        Thread.sleep(tempoEspera);

        // Determina a resolução da imagem
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        Dimension screenSize = toolkit.getScreenSize();
        Rectangle screenRect = new Rectangle(screenSize);

        // Cria o screenshot
        Robot robot = new Robot();
        BufferedImage imagem = robot.createScreenCapture(screenRect);

        // Salva a screenshot capturada no arquivo PNG
        ImageIO.write(imagem, “png”, new File(nomeImagen));

        System.out.println(”Screenshot salvo.”);
        System.exit(0); 

    }
}

Tri fácil né!!! Agora imagine o que você pode fazer se somar a esse exemplo o código do post Agendando Tarefas numa Aplicação em Java ???
Infinitas possibilidades se abrem a sua frente hehehe, e só ter criatividade que pode se fazer coisas realmente legais…

Abraços
Tiago Silveira

Jogos em Java

abril 10, 2007 By: Tiago Silveira Categoria: Java, Tecnologia

Ao contrario do que muitos pensam Java e uma ótima linguagem pra se escrever jogos.
Ai você deve estar pensando, “Softwares em Java são muito lentos”… Bom quem disse isso estaria com razão se estivesse passado os últimos 17, 18 anos em uma ilha deserta, isto é estaria bastante desatualizado. Hoje as JVMs são poderosas e seus otimizadores usam técnicas avançadas para obter performance igual ou superior à de código nativo.

Olhem esse exemplo de jogo, ele roda direto no browser, simples mas já da uma idéia do que pode se fazer.
Se quiser o código do jogo para rodar ele em desktop pegue aqui

Site do desenvolvedor

Abraços
Tiago Silveira

Java Vs .net - Quem é Melhor???

abril 10, 2007 By: Tiago Silveira Categoria: Geral, Java, Tecnologia

Alguns pontos que devemos levar em consideração…
1 - 80% dos negócios do mundo rodam em cima de programas COBOL. Nem Java nem .NET vão decidir o futuro da humanidade, portanto.

2 - Nunca vi um sistema que não pudesse ser implementado em qualquer linguagem que seja. Portanto, a discussão Java x .NET não se decide na esfera técnica.

3 - Produtividade - não é criando grids para acesso direto a tabelas que se mede produtividade, mas sim no tempo total que leva para uma idéia sair da cabeça do usuário de negócios até se transformar em um sistema rodando no ambiente de produção, testado, aprovado e homologado. Numa “competição” Java x .NET, é certo que ambas as tecnologias chegariam empatadas “na margem de erro” caso se considerasse todo o ciclo de vida de um sistema.

4- Ainda em produtividade, só de 15% a 20% do tempo é gasto efetivamente em implementação. O grosso do esforço é gasto em levantamento de requisitos e testes.

Por falar em produtividade, só 30% do tempo do programador é gasto em desenvolvimento de fato, em média. O resto é perdido em debugging ou reescrevendo requisitos que foram mal-entendidos (e mal-explicados, por conseguinte). Pare e pense na sua rotina diária e veja se vc discorda desses números.

Assim, 20% X 30% = 60% do tempo total de um projeto em desenvolvimento REAL. Supondo que uma das duas tecnologias fosse 50% MAIS PRODUTIVA do que a outra (e nenhuma delas o é), o impacto final seria de 3% sobre o tempo total do projeto. Quase indetectável.

Assim, o desafio proposto perde a validade em si. Até porque ninguém vai sair “convertido” de um evento desses. Agora, um desafio de ponta a ponta, num prazo de algumas semanas, por exemplo, esse sim teria valia. Mas já não seria mais um desafio Java x .NET, mas, talvez, um desafio MDA x AMD (tipo Together) x Agile (S. Ambler), por exemplo.

4 - Decisões estratégicas - Há uns 20 anos, mais ou menos , o Natural/ADABAS ganhou um grande mercado do COBOL, porque era muuuito mais produtivo e fácil de mexer. Hoje quem tem Natural/ADABAS quer morrer, porque a Software AG está cobrando os tubos (zilhões de dólares) pela renovação das licenças e a tecnologia é “imigrável”. Paralelo com .NET, proprietário como Natural/ADABAS. Erro estratégico.

Outro exemplo: há 30 anos, C prometia ser o que Java promete hoje. Se alguém algum dia teve um sistema de negócios escrito em C, então deve ter uma boa história de migração urgente para contar. Paralelo com Java, “assembleísta” como C. Outro erro estratégico.

Então, amigos, tecnologicamente falando, Java e .NET se equivalem.

Não consigo imaginar um sistema corporativo (que é o que interessa, afinal) que possa ser feito em um, mas não no outro. Ou que saia muito mais rápido em um do que no outro.

Texto gentilmente cedido pelo Grupo [UML-FATEC]

OBS. Mas eu prefiro Java e você?

Abraços
Tiago Silveira

Statement e SQL injection em Java

abril 07, 2007 By: Tiago Silveira Categoria: Desenvolvimento Web, Java

Olá pessoal,
Vamos falar um pouco de segurança? Como andam suas aplicações web no quesito segurança?
Você usar Statement ou PreparedStatement? Se a resposta for “Statement” saiba que sua aplicação pode estar correndo grande perigo, por uma pratica chamada SQL injection.
Vejam um exemplo:

String sql = "select * from user where username='" + username +"' and password='" + password + "'";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next()) {
loggedIn = true;
	out.println("Usuário Logado com sucesso.");
} else {
	out.println("UsuárioSenha não encontrado.");
}

A principio nada de errado ai, mas se alguém colocar no campo usuário isso admin’ OR ‘1′=’1 o comando select final ficaria algo assim:

select * from user where username=’admin’ OR ‘1′=’1′ and password=”

O resultado desse comando retorna o usuário admin, ou o primeiro usuário cadastrado no banco que e geralmente o que tem SID root, imaginem o estrago que isso pode acarretar.

Outro exemplo:

String sql = "select * from user where estado='RS'
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next()) {
    	out.println("Usuário:" + rs.getString(1));
}

Bem simples esse select né, mas se o usuário ao invés de digitar ‘RS’, digitar ‘or true.
Seria a mesma coisa que se o select fosse ‘Select * from user’ Traz tudo!!!
Agora pra resolver esse tipo de coisa você pode usar PreparedStatement ao invés de Statement.

Exemplo:

String select = "SELECT * FROM User WHERE username = ? ";
PreparedStatement prepStmt = con.prepareStatement(selectStatement);
prepStmt.setString(1, username);
ResultSet rs = prepStmt.executeQuery();

O SQL Injection não tem vez contra o PreparedStatement, que além de deixa a aplicação mais “segura”, também melhora a performance da mesma.

Abraços
Tiago Silveira

Executando programas externos com Java

abril 06, 2007 By: Tiago Silveira Categoria: Java

Olá pessoal,
Exemplinho bem simples que é só pra mostrar que a execução de programas externos com Java e bem simples e funcional.

import java.io.IOException;

/**
 * @since JDK1.4.2
 *
 * @author Tiago
 */
public class IE {
    public static void main(String args[]) {

        String url = “http://www.jtiago.com”;
        try {
            // Os 2 funcionam igual
            //Runtime.getRuntime().exec(”rundll32 url.dll,FileProtocolHandler ” + url);
            Runtime.getRuntime().exec(”C:/Arquivos de programas/Internet Explorer/IEXPLORE.EXE ” +url);
        } catch (IOException e) {
            e.printStackTrace();
        }
   }
}

Fácil né?
Era isso então.

Abraços…
Tiago Silveira

Agendando Tarefas numa Aplicação em Java

abril 04, 2007 By: Tiago Silveira Categoria: Java

Olá pessoal vou postar hoje um código no mínimo interessante.
Fiz ele a mais ou menos uns 2 anos atrás pra fazer uma implementação em uma aplicação que precisava ficar monitorando uma determinada ação que não irei entra em detalhes, pois seria meio anti ético.

Eis o Código:

import java.util.Timer;
import java.util.TimerTask;
/**
 * Classe que executa uma determinada tarefa num tempo programado.
 * @author  Tiago Silveira
 */
public class Exemplo {  

    public static void main(String a[]) throws InterruptedException{  

        Timer timer = new Timer();  

        /* Função executada indefinidamente a cada 1 minuto. */
        timer.schedule(new Exemplo().getTarefa(), 0, 1000*60);
        // timer.cancel();
    }  

    /**
     * Obtendo o objeto.
     */
    public TimerTask getTarefa(){
        return new Tarefa();
    }  

    /**
     * Tarefa é uma InnerClass que extende a classe abstrata Timertask que
     * também é uma Thread.
     */
    public class Tarefa extends TimerTask {
        public void run(){
            System.out.println(”Função Executada”);
        }
    }
}

Bom era isso por hoje…
Nos próximos dias quero ver se posto um esquema que fiz que parece ajax, mas não é!!!

Abraços…
Tiago Silveira


Fechar
Envie por e-mail
radio digital sony walkman microsistem diskman radio am fm mini sistem mini gravador digital radio am mini disc mini gravador portatil micro system philips micro system walkman sony radio relogio escuta fm cd player Audio Portatil gravador digital cd players mini system sony ondas curtas system sony dynacom radio fm micro system sony aiwa radio cd mini mp3 mini system radio radio portatil microsystem md radio sony discman minidisc playstation portatil micro sistem
AutoLinks por NerdowN