#Este é um post fechado Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!
Artigo Java Magazine 03 - Java Livre
Artigo publicado pela Java Magazine 03.
Estatísticas:
Serviços:


Java e GTK+
Uma alternativa ao Swing
Usando o toolkit livre GTK+ para criação de aplicações Java visuais com performance nativa
Nos seus primórdios acreditava-se que Java seria a plataforma padrão para o desenvolvimento de aplicações no desktop, ocupando o papel que então era do Windows. O tempo passou, e o Java não conseguiu realizar o seu potencial nesta área. Alguns culpam a Microsoft – que “sabotou” o Java ao criar uma versão da tecnologia que rodava apenas no Windows – mas a verdade é que o próprio Java possui deficiências que o levaram a ocupar com destaque, pelo menos até hoje, apenas o servidor e não o cliente.
Neste artigo apresentamos como o desenvolvedor Java pode utilizar o toolkit GTK+, o mesmo utilizado pelas aplicações GIMP, Gnome e Mozilla, para criar aplicações gráficas multiplataforma e com performance comparável a soluções nativas. Mas antes, você pode ver no Quadro "Por que o Swing é lento" o motivo do Java não ter “pego” ainda no desktop.
Por que o Swing é lento?
Originalmente, o Java fornecia o toolkit AWT para a criação de aplicações gráficas. O AWT era uma camada Java para os objetos gráficos nativos de cada plataforma, mas restringia-se apenas aos objetos que existiam em todas as plataformas suportadas, a saber Windows, MacOS e X Window (Unix e Linux). O resultado final era um toolkit muito pobre, sem objetos como sliders, abas, grids e tantos outros que os desenvolvedores consideravam indispensáveis.
Pior do que isso, o AWT não se comportava do mesmo jeito em todas as plataformas, porque um botão ou uma caixa de texto do Windows, por exemplo, não se comportam da mesma forma que seus equivalentes no MacOS ou X Window. O resultado levou a uma piada popular parodiando o slogan da Sun para o Java: “Write Once, Debug Everywhere” ("Escreva uma vez, depure em todos os lugares").
Com o Java 2, a Sun decidiu dar o status de padrão a um novo toolkit: o Swing, rico em componentes e escrito inteiramente em Java (utilizando apenas as primitivas gráficas e de janelas da plataforma, ainda fornecidas pelo AWT), e garantindo a compatibilidade multiplataforma das aplicações gráficas em Java. Mas o preço a pagar foi alto: qualquer aplicação Swing, mesmo um simples “Hello World”, é visivelmente mais lenta do que o equivalente escrito com ferramentas nativas, como Delphi, Visual Basic, QtDesigner, Glade ou Hypercard.
Em parte, o caráter interpretado dos bytecodes Java explica a lentidão do Swing – rotinas gráficas são onde se costuma ter código assembly escrito à mão. Mas o grande culpado é o próprio projeto (design) do Swing. Ele é escrito “by the book”, de modo excessivamente acadêmico, seguindo todas as boas práticas de orientação a objetos. Isso gera um grande overhead de troca de mensagens, criação e destruição de objetos temporários, e acúmulo de pequenos objetos aguardando pelo coletor de lixo, o que explica a grande demanda de memória de uma aplicação Swing típica.
Solução: de volta ao código nativo
Um toolkit gráfico “menos OO” (tal qual nossos projetos físicos de bancos de dados relacionais, que são freqüentemente denormalizados), e utilizando código nativo nos pontos cruciais, poderia dar ao Java desempenho comparável às soluções inteiramente nativas, mas ainda assim preservando o caráter multiplataforma da tecnologia.
ATENÇÃO! A EXIBIÇÃO DESTE ARTIGO FOI INTERROMPIDA.
#Este é um post fechado Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!




Artigo Java Magazine 21 - Relatórios Avançados

Artigo Java Magazine 21 - Caminhos para o Classpath

Artigo Java Magazine 40 - MySQL para desenvolvedores Java

Artigo Java Magazine 41 - Componentes Avançados do Swing

Artigo Java Magazine 41 - JDBC de Ponta a Ponta: Parte 1

Artigo Java Magazine 28 - Persistência com Hibernate

Artigo Java Magazine 46 - JBoss: Instalação, Arquitetura , Configuração, Tuning e Administração

Artigo Java Magazine 31 - Eclipse Visual com SWT

Artigo Java Magazine 23 - Segurança J2EE no JBoss

Artigo Java Magazine 23 - Começando com Java



Curso Online - Introdução ao AJAX Reverso

(tutorial) Aprenda a persistir dados em suas aplicações Java utilizando Hibernate

Desenvolvendo uma aplicação completa utilizando Swing

Introdução ao JDBC

Java Web: Saiba como Desenvolver Aplicações utilizando Spring, Hibernate e JSF na Prática

OLAP com o SQL Server

Introdução à Engenharia de Requisitos

Curso OnLine WebDesign - Desenvolvendo o layout de um WebSite passo a passo



Artigo Java Magazine 21 - Caminhos para o Classpath

Artigo Java Magazine 40 - MySQL para desenvolvedores Java

Artigo Java Magazine 41 - Componentes Avançados do Swing

Artigo Java Magazine 41 - JDBC de Ponta a Ponta: Parte 1

Artigo Java Magazine 28 - Persistência com Hibernate

Artigo Java Magazine 31 - Eclipse Visual com SWT

Artigo Java Magazine 23 - Segurança J2EE no JBoss

Artigo Java Magazine 23 - Começando com Java

Artigo Java Magazine 22 - Segurança no J2EE

Artigo Java Magazine 22 - Datas e Horas em Java

Artigo Java Magazine 46 - JBoss: Instalação, Arquitetura , Configuração, Tuning e Administração

Artigo Java Magazine 27 - Uma Aplicação Java Completa, Parte 3

Artigo Java Magazine 02 - Código Java Nativo

Artigo Java Magazine 17 - GUIs Nativas com SwingWT

Artigo Java Magazine 13 - Relatórios Corporativos

Artigo Java Magazine 26 - Uma Aplicação Java Completa, Parte 2

Artigo Java Magazine 26 - Números em Java

Artigo Java Magazine 08 - Conheça o CVS

Artigo Java Magazine 07 - Bancos de dados livres

Artigo Java Magazine 09 - Tira dúvidas

Artigo Java Magazine 09 - Java Livre

Artigo Java Magazine 11 - NetBeans Inicial

Artigo Java Magazine 10 - Tira-dúvidas

Artigo Java Magazine 10 - Código Eclipse

Artigo Java Magazine 25 - Um Sistema Java Completo - parte 1

Artigo Java Magazine 24 - O Novo NetBeans

Artigo Java Magazine 24 - Tag Files no JSP 2.0

Artigo Java Magazine 32 - Explorando o NetBeans 5

Artigo Java Magazine 32 - News & Bits

Artigo Java Magazine 36 - Conhecendo o Ant

Artigo Java Magazine 35 - Frameworks de Logging

Artigo Java Magazine 37 - Introdução ao JMS

Artigo Java Magazine 38 - O Eclipse Callisto

Artigo Java Magazine 04 - Eclipse inicial uma introdução ao popular IDE livre

Artigo Java Magazine 34 - Melhores Práticas para o Struts

Artigo Java Magazine 19 - Java Livre

Artigo Java Magazine 20 - Servelets no Tomcat 5

Artigo Java Magazine 15 - Entity Beans no JBoss

Artigo Java Magazine 15 - Cafeína

Artigo Java Magazine 15 - Java news

Artigo Java Magazine 33 - Hibernate na Web

Artigo Java Magazine 30 - O Novo HSQLDB

Artigo Java Magazine 30 - Tira-Dúvidas

Artigo Java Magazine 30 - News & Bits

Artigo Java Magazine 38 - Datas no Desktop

Artigo Java Magazine 29 - Clusters Web com Tomcat

Artigo Java Magazine 29 - Tira Dúvidas

Artigo Java Magazine 18 - Aplicações Web com Tomcat 5

Artigo Java Magazine 18 - Cafeína

Artigo Java Magazine 14 - Java livre

Artigo Java Magazine 39 - Cafeína

Artigo Java Magazine 42 - Componentes Avançados do Swing

Artigo Java Magazine 42 - JDBC de Ponta a Ponta

Artigo Java Magazine 43 - Modelagem com ArgoUML

Artigo Java Magazine 44 - BLOBs com JDBC e Swing

Artigo Java Magazine 45 - Stored Procedures com Java

Artigo Java Magazine 47 - Testes: Ferramentas e Boas práticas

Artigo Java Magazine 48 - Layout na Web com Tiles e CSS

Artigo Java Magazine 52 - Desenvolvimento Ajax com Java Parte 1:

artigo java magazine 51- No mundo da internacionalização

Artigo Java Magazine 50 - Projeto JBoss em Foco

Artigo Java Magazine 06 - Java Livre

Artigo Java Magazine 05 - Java Livre

Artigo Java Magazine 05 - Java News

Artigo Java Magazine 03 - Java Livre



[vídeo] Array no ViewData: Curso ASP.NET MVC 2.0 com Visual Studio 2010 - Parte 14

Mineração de Repositórios de Software: A Computação ajudando à Computação.

Boas-vindas

Boas-vindas

Mineração de Repositórios de Software: A Computação ajudando à Computação.

[vídeo] Teste Automatizado: Codificação do UserTest - Curso JEE e JSE – Loja Virtual Completa – Parte 17

[vídeo] MD5 com Delphi: Usando o Método Locar - Curso Aplicação Financeira Delphi 2009 e MySQ – Parte 32

[vídeo] MD5 com MySQL: Utilizando a função para Logar - Curso Aplicação Financeira Delphi 2009 e MySQL – Parte 31

Trabalhando com Cache - Parte 2



Você está em:





Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

