Novo em programação Java? Esta página fornece uma visão geral de™ noções básicas de tecnologia Java e explica como a tecnologia se encaixa no contexto de desenvolvimento de software moderno. Os links para conteúdo de introdução relevante do developerWorks, outros recursos educacionais, bem como downloads e produtos IBM, oferecem um excelente ponto de partida para investigação adicional.

O que é tecnologia Java?

Tecnologia Java é uma linguagem de programação e uma plataforma:

  • A plataforma Java é uma plataforma apenas de software que é executada sobre várias plataformas de hardware. Ela possui três versões (consulte Várias edições da plataforma Java, abaixo). Consiste na JVM e na Application Programming Interface (API) Java — um grande conjunto de componentes de software (classe) prontos para uso que facilitam o desenvolvimento e implantação de applets e aplicativos. A API Java estende tudo, de objetos básicos à rede e segurança, geração XML e serviços da Web. Está agrupada em bibliotecas— conhecidas comopacotes — de classes e interfaces relacionadas.
    Juntamente com a API Java, cada implementação completa da plataforma Java inclui:

A JVM também provou ser uma plataforma robusta para execução de linguagens diferentes da linguagem de programação Java. Por exemplo, Groovy, Scala e implementações especiais de Ruby e Python oferecem aos desenvolvedores a versatilidade para programar a JVM em uma linguagem dinâmica ou funcional. (Para obter informações adicionais, consulte Como a tecnologia Java está relacionada às linguagens dinâmicas e programação funcional? abaixo.)

A tecnologia Java foi desenvolvida pela Sun Microsystems. O Java Community Process (JCP), uma organização aberta de desenvolvedores e licenciados Java internacionais, desenvolve e revisa especificações de tecnologia Java, implementações de referência e kits de compatibilidade de tecnologia. Em 2007, a Sun disponibilizou uma grande quantidade de sua tecnologia Java principal como software livre na GNU general public license version 2 (GPLv2). (Para obter informações adicionais, consulte Como a tecnologia Java está relacionada ao desenvolvimento de software livre? abaixo.)

Por que a tecnologia Java é importante?

O principal benefício da linguagem Java é a portabilidade de aplicativos Java em plataformas de hardware e sistemas operacionais — possível porque a JVM instalada em cada plataforma entende o mesmo bytecode.

A linguagem Java e a plataforma têm uma escala impressionante. Os aplicativos podem ser facilmente gravados (ou adaptados de aplicativos de desktop Java existentes) para dispositivos com recursos limitados. Em escala, a linguagem é uma estrutura ideal para programação da Web do lado do servidor, estendendo a força de computação do usuário do desktop para os recursos da Web. Como ela foi projetada para execução de maneira segura em redes, a linguagem suporta este nível de segurança ao operar na Internet. Os componentes da Web são suportados por plataformas de tempo de execução chamadas contêineres de Web, cujos serviços incluem o dispatch de pedidos, segurança, simultaneidade, gerenciamento de ciclo de vida e acesso a APIs, tais como, nomenclatura, transações e e-mail. No high end, servidores de aplicativos Java servem como contêineres de Web para componentes Java, XML e serviços da Web que podem interagir com bancos de dados e fornecer conteúdo da Web dinâmico; eles também fornecem um ambiente de implantação de aplicativos para aplicativos corporativos, com recursos de gerenciamento de transações, segurança, armazenamento em cluster, desempenho, disponibilidade, conectividade e escalabilidade.

Suportando padrões abertos na corporação, a tecnologia Java abre a porta para o uso de XML e serviços da Web para ajudar a compartilhar informações e aplicativos em linhas de negócios (consulte Como a tecnologia Java está relacionada a serviços SOA/da Web? abaixo). A tecnologia Java serve como a parte central de muitos produtos IBM e serviços de consultoria técnica (consulte Quais ferramentas e produtos IBM estão disponíveis para programadores Java? abaixo) e é crítica para as principais iniciativas IBM:

Várias edições da plataforma Java

Três edições da plataforma Java facilitam para desenvolvedores de software, provedores de serviços e fabricantes de dispositivos o direcionamento a mercados específicos:

Quais são as tecnologias de componentes Java?

A zona de tecnologia Java do developerWorks mantém um glossário completo das tecnologias de componentes Java padrão (em inglês). A seguir está uma lista parcial de componentes, pacotes opcionais e extensões para cada edição da plataforma — as partes complexas que formam o todo — completado com uma breve descrição e um link para um recurso para demonstrar seu lugar no mundo de desenvolvimento Java. Observe que muitos dos seguintes recursos estão disponíveis nas três edições.

Tecnologias em Java SE:

  • Java Foundation Classes (Swing) (JFC) é um conjunto de bibliotecas de classes Java que suportam a construção de GUIs e funcionalidade de gráficos para aplicativos clientes baseados em Java. (Consulte o tutorial "Introdução ao Swing"; "Design de interface dinâmica com o Swing" e "Aprimore a acessibilidade de suas GUIs (em inglês)" que também o ajudarão a iniciar no Swing.)
  • JavaHelp é um sistema de ajuda independente de plataforma, extensível, que permite que desenvolvedores e autores incorporem a ajuda on-line em applets, componentes, aplicativos, sistemas operacionais e dispositivos e entreguem a documentação on-line baseada na Web. (Consulte "Dê uma mão aos seus aplicativos Java (em inglês).")
  • Java Web Start o ajuda a simplificar a implantação de aplicativos Java, permitindo que os usuários façam download e ativem aplicativos com todos os recursos (como planilhas) com um único clique, sem passar por procedimentos de instalação. (Consulte "Java Web Start (em inglês).")
  • API de Caminho de Certificação fornece um conjunto de APIs para a criação, construção e verificação de caminhos de certificação (também conhecidos como "cadeias de certificados") para estabelecer seguramente o mapeamento de uma chave pública para um assunto. (Consulte "Gerar cadeias de certificados para testar aplicativos Java (em inglês).")
  • Java Authentication and Authorization Service (JAAS) é um pacote que permite que os serviços autentiquem e apliquem controles de acesso em usuários, implementando uma versão Java da estrutura padrão Pluggable Authentication Module (PAM) e suportando a autorização baseada em usuário. (Consulte "Segurança Java com JAAS e JSSE" e "Mecanismos internos de autorização Java (em inglês)"; tente o tutorial "Segurança Java, Parte 2: Autenticação e autorização.")
  • Java Speech API (JSAPI) inclui as especificações Grammar Format (JSGF) e Markup Language (JSML) e permite que aplicativos Java incorporem tecnologia de voz em interfaces com o usuário. JSAPI define uma API de plataforma cruzada para suportar reconhecedores de comandos e de controles, sistemas de ditado e sintetizadores de voz. (Consulte esta seção de "A interface com o usuário de Java 2 (em inglês).")
  • Metadata Facility permite marcar classes, interfaces, campos e métodos como tendo atributos específicos para que possam ser processados de maneiras especiais por ferramentas de desenvolvimento, ferramentas de implantação ou bibliotecas de tempo de execução. (Consulte "Anotações em Tiger, Parte 1: Incluir metadados em código Java (em inglês).")
  • Utilitários de Simultaneidade são um conjunto de utilitários de nível médio que fornecem a funcionalidade comumente necessária em programas simultâneos. (Consulte o tutorial "Simultaneidade em JDK 5.0 (em inglês).")
  • Java API for XML Processing (JAXP) permite que aplicativos Java analisem e transformem documentos XML independentemente de uma implementação de processamento XML específica e oferece a flexibilidade de troca entre processadores XML, sem fazer mudanças no código do aplicativo. Java API for XML Binding (JAXB) permite automatizar o mapeamento entre documentos XML e objetos Java. (Consulte o tutorial de três partes "Programação XML em tecnologia Java (em inglês)"; aprofunde-se no JAXP com "Tudo sobre JAXP, Parte 1(em inglês) " e "Tudo sobre JAXP, Parte 2"; explore ainda mais na série de artigos Ligação de dados prática ; confira também a zona XML do developerWorks (em inglês).)

Tecnologias em J2EE:

  • A tecnologia Enterprise JavaBeans (EJB) usa um modelo de componente para simplificar o desenvolvimento de aplicativos de middleware com suporte automático para serviços, como transações, segurança e conectividade de banco de dados. (Consulte o tutorial "Introdução à tecnologia Enterprise JavaBeans (em inglês)," que apresenta a tecnologia; consulte a série Boas práticas de EJB; confira "Projete aplicativos corporativos com a API Java Persistence EJB 3.0 (em inglês).")
  • Especificação de Portlet define um conjunto de APIs para computação de portal Java, abordando as áreas de agregação, personalização, apresentação e segurança. (Consulte "O que há de novo na Java Portlet Specification V2.0 (JSR 286)? (em inglês)")
  • Java Message Service (JMS) é uma API que permite o desenvolvimento de aplicativos transportáveis, baseados em mensagens para a plataforma Java, definindo um conjunto comum de conceitos de sistema de mensagens e estratégias de programação para todos os sistemas de mensagens compatíveis com a tecnologia JMS. (Consulte o tutorial "Introdução ao Sistema de Mensagens Java (em inglês).")
  • JavaServer Faces (JSF) fornece um modelo de programação que ajuda a projetar aplicativos da Web, montando componentes reutilizáveis da UI em uma página, conectando estes componentes a uma origem de dados do aplicativo e ligando eventos gerados pelo cliente a manipuladores de eventos do lado do servidor. (Consulte o tutorial de duas partes "Introdução a JavaServer Faces" e explore a série de colunas JSF para não adeptos.
  • JavaServer Pages (JSP) permite que desenvolvedores da Web desenvolvam rapidamente e mantenham facilmente páginas da Web dinâmicas, independentes de plataforma com interfaces com o usuário separadas e geração de conteúdo, para que designers possam alterar o layout da página sem alterar o conteúdo dinâmico. A tecnologia usa tags semelhantes a XML que encapsulam a lógica que gera o conteúdo para a página. (Consulte o tutorial "Introdução à tecnologia JavaServer Pages (em inglês)"; consulte também a série Boas práticas de JSP.)
  • Servlets Java estendem e aprimoram o alcance de servidores da Web, fornecendo um método baseado em componente, independente de plataforma para a construção de aplicativos baseados na Web sem as limitações de desempenho de programas CGI. (O tutorial "Introdução à tecnologia de Servlet Java (em inglês)" deve ajudá-lo a iniciar.)
  • J2EE Connector Architecture (JCA) define uma arquitetura padrão para conectar plataformas J2EE a Enterprise Information Systems (EIS) heterogêneos, definindo um conjunto de mecanismos escaláveis, seguros e transacionais, permitindo que um fornecedor de EIS ofereça um adaptador de recursos padrão que se conecta a um servidor de aplicativos. (Consulte "Entendendo transações JCA"; "Escolhendo entre JCA, JMS e serviços da Web para EAI (em inglês)"; "Integre enterprise information systems remotos com JCA, JMS e serviços da Web"; e o tutorial "Introdução a J2EE Connector Architecture (em inglês).")
  • Java Transaction API (JTA) é uma API de alto nível, independente de implementação e de protocolo que permite que aplicativos e servidores de aplicativos acessem transações. Java Transaction Service (JTS) especifica a implementação de um Gerenciador de Transações que suporta JTA e implementa o mapeamento Java da especificação OMG Object Transaction Service (OTS) 1.1 no nível abaixo da API. JTS propaga transações usando o Internet Inter-ORB Protocol (IIOP). (Consulte "Entendendo JTS — Uma introdução a transações (em inglês).")

Tecnologias em J2ME:

  • Mobile Information Device Profile (MIDP) é uma das duas configurações que formam o Java runtime environment para dispositivos de informações móveis com recursos restritos. MIDP fornece a funcionalidade principal do aplicativo, incluindo a interface com o usuário, conectividade de rede, armazenamento de dados local e gerenciamento de ciclo de vida do aplicativo. (Consulte o tutorial "Implementando a tecnologia Push com J2ME e MIDP"; confira "MIDlets melhores por design," "Desenvolvimento da GUI customizada com MIDP 2.0," e o tutorial "Desenvolvimento de MIDlet com o Wireless Toolkit (em inglês).")
  • Mobile 3D Graphics API for J2ME (M3G) é uma API de gráficos 3D leve, interativa que fica entre o J2ME e o MIDP como um pacote opcional. (Consulte o artigo de duas partes "Gráficos 3D para dispositivos remotos Java.")

Como a tecnologia Java está relacionada ao desenvolvimento de aplicativos da Web?

A linguagem Java tem sido a base de desenvolvimento da Web e, nos últimos anos, tem ocorrido uma explosão de estruturas e ferramentas que simplificam o desenvolvimento da Web para Java e facilitam a criação de aplicativos Web 2.0 rich e interativos.

Saiba mais sobre desenvolvimento da Web na linguagem Java:

Como a tecnologia Java está relacionada a serviços SOA/da Web?

Uma arquitetura orientada a serviços é um modelo de componente que relaciona as unidades funcionais de um aplicativo (conhecidas como serviços, de agora em diante serviços da Web) por meio de interfaces e contratos bem definidos entre os serviços. A interface é definida de uma maneira neutra, independentemente do hardware, sistema operacional e linguagem de programação nos quais o serviço é implementado, permitindo que serviços construídos em diferentes sistemas interajam uns com os outros de maneira uniforme, universal. As SOAs são um modelo alternativo fracamente acoplado para os modelos mais tradicionais, altamente acoplados, orientados a objetos.

Os serviços da Web resultantes permitem que regras e processos de negócios sejam definidos em XML para que os aplicativos de software possam comunicar-se de uma maneira independente de plataforma e de linguagem de programação. A tecnologia XML torna os dados transportáveis e facilita a criação de mensagens, enquanto a tecnologia Java torna o código transportável. O fato de o XML e a linguagem Java funcionarem bem juntos os tornam uma combinação ideal para construção e implantação de serviços da Web.

Saiba mais sobre isso:

Como a tecnologia Java está relacionada às linguagens dinâmicas e programação funcional?

Muitos aspirantes a desenvolvedores Java têm uma vasta experiência em outras linguagens. E até mesmo os desenvolvedores Java veteranos concordam que a linguagem de programação Java não é a linguagem ideal para cada necessidade de desenvolvimento. Felizmente, o suporte da JVM para várias linguagens permite que a plataforma Java se beneficie da agilidade e recursos de linguagens de script dinâmicas modernas e de linguagens funcionais para protótipos ou construção de alguns tipos de aplicativos.

Saiba mais sobre isso:

  • A linguagem de script Groovy coloca os recursos e bibliotecas com os quais os desenvolvedores Java estão mais familiarizados em uma estrutura de desenvolvimento ágil, que não requer compilação, facilita construções sintáticas e permite que seus scripts sejam usados em aplicativos Java normais. Obtenha uma visão abrangente do que o Groovy pode fazer na série de colunas Practically Groovy.

Cruzamento

Outras estruturas estão modelando a forma de construção de estruturas Java, e os conceitos usados por outras linguagens podem informar sua programação Java. A série de colunas Crossing borders discute conceitos e técnicas de programação que diferem do desenvolvimento Java, mas ainda são altamente relevantes para ele.

  • A API de script Java, nova no Java SE 6 e compatível com versões anteriores a Java SE 5, oferece uma maneira simples de invocar diversas linguagens de script usando um pequeno conjunto de interfaces e classes concretas. Permite ainda ler e invocar scripts externos no tempo de execução, permitindo alterar o comportamento de um aplicativo em execução. Leia mais sobre ela no artigo de duas partes "Invocar dinamicamente linguagens dinâmicas."
  • Você é fã de programação funcional? A série de colunas O guia do desenvolvedor Java ocupado para Scala introduz o Scala, uma linguagem de programação que combina técnicas funcionais e orientadas a objetos para a JVM.
  • O suporte para linguagens alternativas tem sido um recurso de JVM por algum momento. Confira a série de colunas alt.lang.jre para aprender sobre como usar implementações de Rexx, Ruby, JavaScript, Python e outras linguagens na plataforma Java.

Como a tecnologia Java está relacionada ao desenvolvimento de software livre?

Uma grande quantidade de projetos de software livre (em inglês) estendem a tecnologia Java com bibliotecas, ferramentas, estruturas, aplicativos e servidores de aplicativos para ajudar os programadores a utilizar esta poderosa tecnologia. Várias tecnologias de software livre foram incorporadas na própria plataforma Java, e outras são eternas favoritas (e, em alguns casos, padrões de facto) para desenvolvedores Java.

Saiba mais sobre algumas das proeminentes tecnologias de software livre para programação Java:

Como posso melhorar minhas habilidades em programação Java?

Você pode usar duas rotas para melhorar suas habilidades: fazer um curso (para certificação ou apenas para aprendizado) ou como autodidata (e, é claro, praticar a gravação de código). Além de utilizar o conhecimento de desenvolvedores experientes, o curso ou caminho de certificação pode oferecer uma prova tangível para empregadores prospectivos de que você possui as habilidades necessárias para construir a tecnologia de que eles precisam. E, tentando você mesmo e usando recursos disponíveis, você aprimora suas habilidades em várias áreas de tecnologia Java. Os seguintes recursos devem ajudar qualquer esforço:

Quais ferramentas e produtos IBM estão disponíveis para programadores Java?

A IBM está na linha de frente como um dos inovadores líderes no uso de tecnologia Java. A seção abaixo realça ferramentas e produtos oferecidos pela IBM para desenvolvedores Java.