Pular para o conteúdo principal

JAVAFX – O JAVA PARA DESKTOP

Com o “boom” do desenvolvimento Web que tivemos anos atrás, muitos programadores (inclusive esse que vos fala) esqueceram do bom e velho desenvolvimento de aplicativos standalone ou aplicativos para desktops.

Há algumas semanas surgiu uma demanda para o desenvolvimento em cima da plataforma JavaFX: uma plataforma que proporciona recursos para a criação de aplicações desktop de forma prática usando Java.
O Java nunca foi muito famoso por seus recursos para o desenvolvimento desktop. O AWT e o Swing não proviam tantos recursos e acabaram sendo ofuscados por plataformas concorrentes, como o Delphi, VB entre outros.

Com o JavaFX, a linguagem ganhou vários novos recursos para o desenvolvimento de aplicações dessa natureza. A plataforma possui diversos componentes que podem ser utilizados para criar a interface de usário de sua aplicação, entre elas estão componentes básicos como tabelas, campos textos, labels e uma grande variedade de gráficos.

As telas podem ser desenvolvidas de várias formas, desde criar os componentes manualmente com código Java, utilizando a linguagem de marcação FXML que é baseado no conhecido padrão XML. É possível também utilizar uma ferramenta bastante útil, provida pela própria plataforma, chamada de Scene Builder.

Com essa ferramenta é possível editar os arquivos FXML de forma visual, com recursos drag and drop. A manipulação dos elementos UI ficam muito simples, permitindo o rápido desenvolvimento da camada de visualização da aplicação.

A interação da camada de visualização e a camada de controle acontece por meio de eventos e a sua atribuição é muito simples: em cada tela informamos qual é a classe responsável pelo controle daquela view. Feito isso, basta anotarmos os métodos e atributos que desejamos que a view acesse com a annotation @FXML, após isso o Scene Builder irá reconhecer os métodos anotados e a integração acaba sendo uma simples seleção em um combo!

Screenshot - Scene Builder
Para customizar a aparência dos componentes é possível utilizar uma linguagem muito conhecida pelos desenvolvedores web: o CSS. A sua utilização no JavaFX é praticamente a mesma da web. A única grande diferença é a nomenclatura utilizada nos atributos, todos eles possuem um prefixo -fx-. Sendo assim, para alterar a cor de fundo de um componente utilizamos o -fx-background-color.

Para finalizar, o JavaFX proporciona uma maneira diferente de empacotamento da aplicação para distribuição. Em uma aplicação convencional, seria distribuido um arquivo .jar para o usuário final e esse usuário precisaria ter o JRE instalado, compatível com o utilizado no empacotamento do .jar, em sua máquina para poder executar a aplicação. Um processo cheio de detalhes e que pode causar vários transtornos.

O JavaFX oferece uma solução mais elegante e simplificada. Com a plataforma é possível gerar um “Self-Contained Application Packaging” onde, além da aplicação, é empacotado junto o “Runtime” do Java, tornando a distribuição compativel independente da versão que o usuário tenha, ou não, instalada em sua máquina, facilitando bastante a distribuição do aplicativo.

Bom, esse é apenas um resumo do que a plataforma oferece, abaixo deixo alguns links para quem tiver interesse em saber mais sobre o assunto e fiquem a vontade para comentar.

Site oficial: http://www.oracle.com/technetwork/java/javafx/overview/index.html

Documentação do Self-Contained Application Packaging: http://docs.oracle.com/javafx/2/deployment/self-contained-packaging.htm

Excelente tutorial: http://edu.makery.ch/blog/2012/11/16/javafx-tutorial-addressapp-1/

Código fonte do tutorial acima: https://github.com/erickzanardo/javafxstudy

Artigo reblogado original em: http://www.dextra.com.br/javafx-o-java-para-desktop/

Comentários

Postagens mais visitadas deste blog

Projetos em Sala de aula

A educação baseada em projetos vem sendo usada como uma metodologia poderosa para melhor preparar estudantes do século 21, já que leva os alunos a trabalhar em conjunto, se organizar, pesquisar e executar harmonicamente. Porém, antes de levar a metodologia para a sala de aula, será que os professores sabem como e quais projetos trabalhar em suas disciplinas? Uma dessas novidades é o  PBLU (Project Based Learning University ), plataforma gratuita que ajuda a capacitar professores para o uso de projetos em suas disciplinas, como uma forma de agregar conteúdo e motivar os estudantes. Conheça os oito pontos principais para um bom programa de aprendizagem baseada em projeto: Ter conteúdo relevante.   O objetivo da abordagem é trabalhar os conceitos-chave das disciplinas acadêmicas a partir de um projeto. Desenvolver habilidades para o século 21.   Ao longo do projeto, os alunos deverão buscar uma resposta a um problema. Para isso, eles deverão buscar referências...

Video Aulas de Java já disponíveis no 4Shared

Turma segue as video aulas já disponíveis para download no 4Shared , espero que vocês gostem das aulas e por favor postem um comentario no blog dizendo o que vc's acharam preciso desse feed back para o constante aprimoramento das aulas . Basta escolher o arquivo clickar  no link para download ( tenha paciencia os arquivos são grandes ) <p>&lt;p&gt;&amp;amp;amp;amp;lt;p&amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;lt;br&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;lt;br&amp;amp;amp;amp;amp;amp;amp;gt;se&amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;gt;&lt;/p&gt;</p> Se a Janela de Download acima não funcionar tente acessar os arquivos usando o seguinte link http://www.4shared.com/dir/34812571/bf01348d/VideoAulas.html Bom estudo  :-)

Sistemas distribuidos: Enviando mensagens TCP Parte II - Servidor

Igual ao servidor UDP esse servidor só vai receber a mensagem e envia-la de volta , ou seja é um servidor de ECO mas com boa vontade basta fazer algumas alterações que vc tem um servidor de chat :-) . Server TCP: import java.net.*; import java.io.*; public class TCPServer { public static void main(String[] args) { try { int serverPort = 7896; ServerSocket listenSocket = new ServerSocket(serverPort); //socket de escuta o socket que vai atender as requisições while(true){ Socket client = listenSocket.accept( ); Connection c = new Connection(client); //precisamos criar a classe conection que vai //inicializar nossas threads para atender a cada requisição } } catch (IOException e) { System.out.println("Listem :" + e.getMessage( )); } }//fim do main }//fim da classe Depois de fin...