Mostrando postagens com marcador Java. Mostrar todas as postagens
Mostrando postagens com marcador Java. Mostrar todas as postagens

quarta-feira, 13 de maio de 2009

Sun realiza evento Java@Tv Digital para desenvolvedores

A Sun Microsystems promove um evento sobre o uso de Java na plataforma de TV digital no próximo dia 14 de maio, quinta-feira. Chamado de Java@TV Digital, o encontro é dedicado aos desenvolvedores que desejam se aproximar das pessoas, empresas e tecnologias que farão parte do ecossistema no desenvolvimento de aplicações interativas para o Sistema Brasileiro de TV Digital.
Fonte: http://info.abril.com.br/professional/desenvolvimento/sun-realiza-evento-javatv-digital-para-desenvolvedores.shtml

sexta-feira, 20 de março de 2009

Adobe Flex + Java EE + Hibernate JPA + BlazeDS

Quer juntar essas tecnologias de forma fácil e viável? Simples! Leia o artigo de Maik Schumacher, consultor da Adobe. O artigo mostra passo-a-passo como montar seu ambiente e sua arquitetura de software para projetos em JavaEE + AdobeFlex + Hibernate JPA. Excelente! Recomendo. Acesse através do link http://www.adobe.com/devnet/flex/articles/flex_hibernate.html.

Blu-ray versus DVD

Blu-ray, também conhecido como BD (de Blu-ray Disc) é um formato de disco óptico da nova geração de 12 cm de diâmetro (igual ao CD e ao DVD) para vídeo de alta definição e armazenamento de dados de alta densidade. É o sucessor do DVD e capaz de armazenar filmes até 1080p Full HD de até 4 horas sem perdas. Requer obviamente uma TV de alta definição (Plasma ou LCD) para exibir todo seu potencial e justificar a troca do DVD. A principal diferença entre os formatos é a capacidade de armazenamento, com vantagem para o Blu-ray, que armazena 25 GB em discos de uma camada (50 GB em duas camadas), contra 15 GB do HD-DVD de uma camada (30 GB em duas camadas).

Na feira JavaOne de 2005, foi anunciado que o software ambiente multi-plataforma Java da Sun Microsystems seria incluído em todos os "tocadores" Blu-ray como uma parte obrigatória do padrão. Java é usada para aplicar menus interativos em discos Blu-ray, em oposição ao método usado em DVD de vídeo, que utiliza segmentos MPEG pré prestados e imagens de legenda selecionáveis, que é consideravelmente mais primitivo e menos perfeito.

Blu-ray obteve o seu nome a partir da cor azul do raio laser ("blue ray" em inglês significa "raio azul"). A letra "e" da palavra original "blue" foi eliminada porque, em alguns países, não se pode registrar, para um nome comercial, uma palavra comum. O HD-DVD tem como empresa líder a Toshiba, com suporte da Microsoft, Sanyo, NEC e estúdios de Hollywood como New Line e Universal. O Blu-ray, da Sony, tem parcerias com Apple, Panasonic, Philips, Samsung, Sharp e outros estúdios de cinema.

Fontes:
http://pt.wikipedia.org/wiki/Disco_Blu-ray
http://tecnologia.uol.com.br/ultnot/2007/03/02/ult4213u43.jhtm

Floggy: Framework brasileiro para persistência em JME

Enfim! A salvação! Agora você não mais precisa escrever milhares para implementar persistência em JME. Floggy é um framework de persistência de objetos para aplicações JME/MIDP. O objetivo principal do framework é abstrair os detalhes de persistência, reduzindo o esforço de desenvolvimento e manutenção. Quem já desenvolveu aplicações em JME, sabe o que estou falando. O Floggy é licenciado sob a "Apache License, version 2.0". O que significa que você pode usar o framework em projetos open-source e em projetos comerciais. Ah! Dado interessante: o projeto é 100% brasileiro, cujo time é composto por três pessoas.
Mais informações: http://floggy.org.

Framework para desenvolvimento de aplicações em Java com Bluetooth

Marge é um framework que ajuda desenvolvedores a criar de forma mais fácil aplicações em Java usando Bluetooth. As aplicações podem ser tanto em JME quanto em JSE. A idéia principal deste projeto é facilitar o uso da JSR 82 (API Java para Bluetooth), pois esta API é relativamente complexa em termos de uso. Mais informações: https://marge.dev.java.net/.

quarta-feira, 29 de outubro de 2008

TV Digital: Sun cumpre o prazo de entrega da especificação Java

O presidente do Fórum do Sistema Brasileiro de TV Digital, Roberto Franco, confirma que a Sun e o Fórum finalizam, até 30 de outubro, a primeira fase do roadmap para o desenvolvimento do Java de código aberto a ser incorporado ao Ginga-J. "A especificação validada pela Sun será encaminhada ao módulo técnico do Fórum, que a transformará em norma para validação pela ABNT", explica Franco.

O Fórum pretende aproveitar a vinda de um alto executivo da Sun ao Brasil para realizar uma cerimônia em São Paulo, celebrando o feito. Tudo dependerá de agendas."Não posso te dar uma data para a finalização do trabalho. Só a consulta pública da ABNT é um processo que leva de 30 a 60 dias", explica. "Só posso te dizer que os trabalhos estão andando bem rápido e dentro dos cronogramas assumidos", acrescentou o executivo.

Fonte: http://www.convergenciadigital.com.br/cgi/cgilua.exe/sys/start.htm?infoid=16507&sid=80

domingo, 21 de setembro de 2008

Java lidera ranking das linguagens de programação

Java continua tendo a preferência dos desenvolvedores, segundo a pesquisa Tiobe Programming Community, que indica a popularidade das linguagens de programação. Apesar de ter apresentado ligeira queda nos últimos doze meses, o Java mantém boa liderança sobre a segunda colocada C. O (Visual)Basic está em terceiro lugar, seguido da C++, PHP e Python. Todas estas linguagens permaneceram na mesma posição em que estavam há um ano. As maiores subidas de ranking foram dadas pela Pascal, que saltou da posição 24 para a 16, e da PowerShell, que não constava na lista em agosto de 2007 e agora ocupa a 15ª posição. Destaque negativo para a linguagem COBOL, que despencou três posições para a 19ª colocação. O ranking feito pela Tiobe, empresa especializada em análise de qualidade de software, é baseado em pesquisas feitas nos principais buscadores de Internet. A lista é atualizada mensalmente. Abaixo, segue o link e um trecho da pesquisa. Para mais informações visite o site http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html.

Fonte: http://computerworld.uol.com.br/mercado/2008/08/07/java-lidera-ranking-das-linguagens-de-programacao-mais-populares/

quinta-feira, 4 de setembro de 2008

Fat Jat Eclipse Plug-In - Tudo em apenas um JAR

O Fat Jat Eclipse Plug-In é uma pequena ferramenta que junta a aplicação Java e seus JARs externos, em um só JAR. Basta executar este JAR e pronto. Baixe o plug-in em http://one-jar.sourceforge.net e coloque os arquivos na pasta "plugin" do seu Eclipse.

quarta-feira, 20 de agosto de 2008

LWUIT: Evolução das interfaces gráficas Java ME

A biblioteca LWUIT (Lightweight User Interface Tools) é uma API que tem o objetivo de melhorar a interface gráfica e o processo de desenvolvimento de aplicações JME. Foi desenvolvida pela própria Sun e possui uma licença que permite sua utilização mesmo em aplicações fechadas e/ou comerciais. A biblioteca traz alguns recursos que não são nativos no Java ME, mas melhoram muito a usabilidade e a qualidade da interface gráfica. Dentre seus recursos, destaco: telas com abas que podem ser posicionadas nos quatro cantos da tela; separação de ComboBox, CheckBox e RadioButton; uso de layouts e contêiners; e tratamento de eventos em botões inseridos no corpo da tela da aplicação. Acredito que é um salto interessante na evolução das interfaces gráficas de aplicações JME. Para mais informações: http://lwuit.dev.java.net .

domingo, 11 de dezembro de 2005

Dica Java - Casting de tipos primitivos

Casting, no que diz respeito às linguagens de programação, tem o sentido moldar um objeto ou tipo primitivo em um outro molde. Normalmente chamamos de conversão. Este artigo focará os tipos primitivos usando no Java. Apresentemos os tipos primitivos do Java:

Descrição
Declaração
Detalhes
Lógico
boolean variavel = true;
Aceita true ou false.
Caracter
char variavel = 'a';
char variavel = 97;
É possível atribuir um único caractere dentro de dois apóstrofos ou simplemente o seu código ASCII
Byte
byte variavel = 100;
Tipo númerico que aceita números entre -128 e 127
Short
short variavel = 2000;
Suporta números entre -32.768 e 32.767
Inteiro
int variavel = 400050;
Aceita números que variam de -2.147.483.648 até 2.147.483.647
Longo
long variavel = 100780000;
Número longo que suporta valores entre
-9.223.372.036.854.775.808 e
9.223.372.036.854.775.807
Ponto Flutuante
float variavel = 5.789f;
Simples precisão (7 casas decimais)
Duplo
double variavel = 0.789;
Dupla presição (15 casas decimais)

O diagrama abaixo representa a "hierarquia" de conversão.




Vemos neste diagrama que somente os tipos byte, short e char podem ser convertidos para o tipo int. Vemos também que todos os tipos podem ser convertidos para o double. O diagrama torna-se agora compreensível para os demais tipos. Tanta definição, tanto "decoreba"... mas como converter? Existe a possibilidade de ocorrerem erros? Vejamos um exemplo:


Início do arquivo casting.java

public class casting {

   public static void main(String[] args) {

      char c;
      byte b;
      short s;
      int i;

      // Conversão de Short para Byte
      s = 200;
      b = (byte)s; // ocorrerá perda de dados
      System.out.println(b);

      // Conversão de Byte para Short
      b = 100;
      s = (short)b;
      System.out.println(s);

      // Conversão de Char para Int
      c = 'a'; // código ASCII = 97
      i = (int)c; // utilizará o código ASCII
      System.out.println(i);

   }

}
Fim do arquivo casting.java

Quando fazemos (short)b , estamos convertendo a variável b em short. Caso não existe a obediência da hierarquia mostrada neste artigo, haverá perda de dados (inconsistência de dados). Um detalhe interessante em casting de tipos primitivos é a conversão utilizando o tipo CHAR, é utilizado o seu código ASCII no processo.

Existe a possibilidade de convertermos objetos. Neste caso, poderíamos tratar não simplesmente de uma conversão e sim de um novo molde ao objeto convertido. É como se pudéssemos moldar um objeto CachorroDeGuarda para um objeto CachorroJaTreinado. Existe a necessidade de haver semelhança entre essas classes (objetos).

Dica Java: Manipulando datas no J2SE e J2ME


1. Formatando um objeto Date (J2SE)

// Este será o objeto que fará a formatação
SimpleDateFormat formatadorData;
// String auxiliar que receberá a data formatada
String minhaDataFormatada = null;
// Data atual. Instanciando uma Data (a data e hora são atualizado
// apenas quando re-instanciamos o objeto, usando o operado "new").
Date minhaData = new Date();

formatadorData = new SimpleDateFormat("dd/MM/yyyy");
minhaDataFormatada = formatadorData.format(minhaData);
System.out.println(minhaDataFormatada);

formatadorData = new SimpleDateFormat("MM/dd/yy");
minhaDataFormatada = formatadorData.format(minhaData);
System.out.println(minhaDataFormatada);

formatadorData = new SimpleDateFormat("dd/MM/yy hh:mm:ss");
minhaDataFormatada = formatadorData.format(minhaData);
System.out.println(minhaDataFormatada);

2. Validando uma String e convertendo para Date (J2SE)

public static boolean dataValida(String data) {

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date minhaDataConvertida = null;

df.setLenient(false);

try {
minhaDataConvertida = df.parse(data);
} catch (ParseException pex) {
return false;
}

return true;
}

3. Personalizando um objeto Date (J2SE/J2ME)

// Instanciando um objeto do tipo Date. Neste caso ele está
// utilizando a data atual, mas poderia ser qualquer objeto do
// tipo Date.
Date minhaData = new Date();

// Inicializando o "Calendar". Iremos utilizá-lo para pegar
// o dado desejado do objeto "Date".
Calendar meuCalendario = Calendar.getInstance();

// "Setando" os milisegundos do objeto "Date" para o "Calendar".
// Poderia ser qualquer objeto do tipo Date. Exemplo: Quando em J2ME,
// trabalhamos com DateField e queremos manipular, utilizamos
// o método getDate() para retornar um objeto do tipo "Date".
meuCalendario.setTime(minhaData);

// Escrevendo as inforações
System.out.println("Dia: " + meuCalendario.get(Calendar.DATE));
System.out.println("Mês: " + (meuCalendario.get(Calendar.DAY_OF_MONTH) + 1));
System.out.println("Ano: " + meuCalendario.get(Calendar.YEAR));
System.out.println("Dia da semana: " + meuCalendario.get(Calendar.DAY_OF_WEEK));
System.out.println("Horas: " + meuCalendario.get(Calendar.HOUR ));
System.out.println("Minutos: " + meuCalendario.get(Calendar.MINUTE ));
System.out.println("Segundos: " + meuCalendario.get(Calendar.SECOND ));
System.out.println("Milisegundos: " + meuCalendario.get(Calendar.MILLISECOND ));


4. Pegando a data atual J2ME

Calendar meuCalendario = Calendar.getInstance();
System.out.println("Dia: " + meuCalendario.get(Calendar.DATE));
System.out.println("Mês: " + (meuCalendario.get(Calendar.DAY_OF_MONTH) + 1) );
System.out.println("Ano: " + meuCalendario.get(Calendar.YEAR));

Dica Java: lendo e escrevendo strings em arquivos, linha a linha


1. Escrevendo

try {

    // Strings a serem inseridas no arquivo.
    String[] meusLinks = new String[] {
        "http://java.sun.com",
        "http://www.linux.org",
        "http://msdn.microsoft.com/netframework"};

    // Instanciando um objeto que irá escrever no arquivo "C:\MeusLinks.txt".
    // O segundo argumento informado no construtor, quando "true", siginifica
    // que os bytes serão escritos no fim do arquivo.
    FileOutputStream meuArquivo = 
new FileOutputStream("C:\\MeusLinks.txt", 
true);



    for (int i=0 ; i<meusLinks.length ; i++) {

        // Convertendo a String para "Array" de "char"
        char[] caracteres = meusLinks[i].toCharArray();
        for (int j=0 ; j<caracteres.length ; j++) {
        meuArquivo.write( (byte)(caracteres[j]) );
        }

        // Escrevendo o byte que pula a linha
        char pulaLinha = 13;
        meuArquivo.write( (byte)(pulaLinha) );
        pulaLinha = 10;
        meuArquivo.write( (byte)(pulaLinha) );
    }

    meuArquivo.close(); // Fechando o arquivo

} catch (FileNotFoundException e) {


} catch (IOException e) {


}


2. Lendo

String linhaAtual = new String();
try {
    // Objeto leitor do arquivo "C:\MeusLinks.txt"
    FileReader fileReader = new FileReader("C:\\MeusLinks.txt");
    // Objeto que manipula o incremento/leitura das linhas do arquivo
    LineNumberReader lineNumber = new LineNumberReader(fileReader);

    // Lendo as linhas do arquivo
    while ((linhaAtual = lineNumber.readLine() ) != null ){
        System.out.println(linhaAtual);
    }
    lineNumber.close();
    fileReader.close();

} catch (FileNotFoundException e) {

} catch (IOException e) {

}

sexta-feira, 30 de julho de 2004

Dica Java - Conexão JDBC

Este código-fonte é clássico. Tem a estrutura fundamental de uma conexão JDBC. As linhas 11 e 12 (sqlserver.java/mysql.java), praticamente determinam qual banco usaremos. Na linha 11 (sqlserver.java/mysql.java), declaramos a biblioteca de estamos utilizando. Já na linha 12, utilizamos informações de conexão com o banco de dados. Evidentemente, devemos possuir para cada conexão, uma biblioteca anexada ao nosso projeto. Quando utilizamos alguma IDE, adicionar uma biblioteca ao projeto torna a compilação e e a execução transparentes no que diz respeito a utilização dessas bibliotecas de conexão JDBC, pois em alguns cliques, informamos ao projeto o caminho da biblioteca e pronto. Basta executar. Porém, quando compilamos/executamos o projeto Java utilizando a linha de comando manualmente ("na munheca"), você deve estar ciente que essas bibliotecas devem estar na lista do classpath. Bom, mas hoje em dia, temos aí o Eclipse, JCreator, Gel, JBuilder, ... que são nossos companheiros não apenas por facilidade, mas como também por necessidade e profissionalismo. Neste artigo, mostrarei dois exemplos de conexões JDBC utilizando os seguintes bancos: MySQL e SQL Server.

Que biblitecas são essas? Geralmente são arquivos .jar, que baixamos na Internet, seja no site original ou não. Eu mesmo baixei as bibliotecas JDBC do HSQLDB e do MySQL por aí pela Internet. Eu estava ciente de que estava baixando os oficiais, mas isso não queria dizer que estava baixando do site oficial. Já o do SQL Server/MSDE, eu baixei no site da Microsoft. O site da Sun, divulga estas listas, porém percebo que são bibliotecas de terceiros, que estão aptas a trabalhar com vários bancos. Gosto dos originais, portanto não vou atrás dessas bibliotecas de terceiros, apesar de possuírem qualidade. Já que utilizaremos os bancos MySQL e SQL Server neste artigo, vou disponibilizar as bibliotecas que utilizei nesses dois códigos-fonte.

Biblioteca do MySQL: mysql-connector-java-3.0.11-stable-bin.jar
Biblioteca do SQL Server: msbase.jar, mssqlserver.jar, msutil.jar




Início do arquivo sqlserver.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

public class main {

   public static void main(String[] args) {
      java.sql.Connection conConexao = null;
      java.sql.Statement stmInstrucao = null;
      java.sql.ResultSet rsQuery = null;

      try {

         Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
         conConexao = java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://LEONARDO","sa","");
         stmInstrucao = conConexao.createStatement();
         rsQuery = stmInstrucao.executeQuery("SELECT name FROM sysobjects WHERE type='U'");

         //Imprime na tela o conteúdo do campo "name" da query
         while (rsQuery.next()) {
            System.out.println(rsQuery.getString("name"));
         }

         stmInstrucao.close();
         conConexao.close();

      } catch (java.sql.SQLException exc1) {
         //Este tratamento de exceção é obrigatório (throws)
         System.out.println("SQLException: " + exc1.getMessage());

      } catch (java.lang.ClassNotFoundException exc2) {
         //Este tratamento de exceção é obrigatório (throws)
         System.out.println("ClassNotFoundException: " + exc2.getMessage());

      }

   }

}

Fim do arquivo sqlserver.java



Início do arquivo mysql.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

public class main {

   public static void main(String[] args) {
      java.sql.Connection conConexao = null;
      java.sql.Statement stmInstrucao = null;
      java.sql.ResultSet rsQuery = null;

      try {

         Class.forName("com.mysql.jdbc.Driver");
         conConexao = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/bancoteste","root","leo");
         stmInstrucao = conConexao.createStatement();
         rsQuery = stmInstrucao.executeQuery("SELECT * FROM tabelausuarios");

         //Imprimindo na tela o conteúdo dos campos "nome" e "email"
         while (rsQuery.next()) {
            System.out.println(rsQuery.getString("nome") + " - " + rsQuery.getString("email"));
         }

         stmInstrucao.close();
         conConexao.close();

      } catch (java.sql.SQLException exc1) {
         //Este tratamento de exceção é obrigatório (throws)
         System.out.println("SQLException: " + exc1.getMessage());

      } catch (java.lang.ClassNotFoundException exc2) {
         //Este tratamento de exceção é obrigatório (throws)
         System.out.println("ClassNotFoundException: " + exc2.getMessage());

      }

   }

}

Fim do arquivo mysql.java


Afinal, quais benefícios são obtidos com o SOLID?

Não se trata de um padrão. É um fundamento da orientação a objetos.  Os princípios SOLID devem ser aplicados para se obter os benefícios da ...