Soluções        Serviços          Atendimento       Governo        Consultoria T.I      Treinamento

Software

Java
Duke, o mascote do Java
Duke, o mascote do Java
Paradigma Orientação a objetos, estruturada, imperativa
Surgido em 1995
Última versão 1.7.1 (18 de outubro de 2011)
Criado por James Gosling e Sun Microsystems
Estilo de tipagem: estática, forte
Compiladores GCJ, Javac
Influenciada por Ada 83, C++, C♯,[1] Eiffel, Generic Java, Mesa, Modula-3, Object Pascal, Objective-C, UCSD Pascal, Smalltalk
Influenciou Ada 2005, BeanShell, C♯,[2] Clojure, D, ECMAScript, Fantom, Groovy, J#, JavaScript, PHP, Python, Scala
Licença: GNU General Public License/Java Community Process
Página oficial www.oracle.com/technetwork/java/index.html

Java é uma linguagem de programação orientada a objeto desenvolvida na década de 90 por uma equipe de programadores chefiada por James Gosling, na empresa Sun Microsystems. Diferentemente das linguagens convencionais, que são compiladas para código nativo, a linguagem Java é compilada para um bytecode que é executado por uma máquina virtual. A linguagem de programação Java é a linguagem convencional da Plataforma Java, mas não sua única linguagem.

Índice

  • 1 História
    • 1.1 Padronização
  • 2 Características
    • 2.1 Licença
  • 3 Exemplos de código
    • 3.1 Método main
    • 3.2 Classes
      • 3.2.1 Classes internas
    • 3.3 Interfaces
    • 3.4 Objetos anônimos
  • 4 Ferramentas
    • 4.1 Frameworks
    • 4.2 Ambientes de desenvolvimento
    • 4.3 Extensões
  • 5 Certificações
  • 6 Comunidade
  • 7 Bibliografia
  • 8 Referências
  • 9 Ver também
  • 10 Ligações externas

História

Em 1991, na Sun Microsystems, foi iniciado o Green Project, o berço do Java, uma linguagem de programação orientada a objetos. Os mentores do projeto eram Patrick Naughton, Mike Sheridan, e James Gosling. O objetivo do projeto não era a criação de uma nova linguagem de programação, mas antecipar e planejar a “próxima onda” do mundo digital. Eles acreditavam que, em algum tempo, haveria uma convergência dos computadores com os equipamentos e eletrodomésticos comumente usados pelas pessoas no seu dia-a-dia.

Para provar a viabilidade desta ideia, 13 pessoas trabalharam arduamente durante 18 meses. No verão de 1992 eles emergiram de um escritório de Sand Hill Road, no Menlo Park, com uma demonstração funcional da ideia inicial. O protótipo se chamava *7 (lê-se “StarSeven”), um controle remoto com uma interface gráfica touchscreen. Para o *7, foi criado um mascote, hoje amplamente conhecido no mundo Java, o Duke. O trabalho do Duke no *7 era ser um guia virtual ajudando e ensinando o usuário a utilizar o equipamento. O *7 tinha a habilidade de controlar diversos dispositivos e aplicações. James Gosling especificou uma nova linguagem de programação para o *7. Gosling decidiu batizá-la de “Oak”, que quer dizer carvalho, uma árvore que ele podia observar quando olhava pela sua janela.

O próximo passo era encontrar um mercado para o *7. A equipe achava que uma boa ideia seria controlar televisões e vídeo por demanda com o equipamento. Eles construíram uma demonstração chamada de MovieWood, mas infelizmente era muito cedo para que o vídeo por demanda bem como as empresas de TV a cabo pudessem viabilizar o negócio. A ideia que o *7 tentava vender, hoje já é realidade em programas interativos e também na televisão digital. Permitir ao telespectador interagir com a emissora e com a programação em uma grande rede de cabos, era algo muito visionário e estava muito longe do que as empresas de TV a cabo tinham capacidade de entender e comprar. A ideia certa, na época errada.

Entretanto, o estouro da internet aconteceu e rapidamente uma grande rede interativa estava se estabelecendo. Era este tipo de rede interativa que a equipe do *7 estava tentando vender para as empresas de TV a cabo. E, da noite para o dia, não era mais necessário construir a infra-estrutura para a rede, ela simplesmente estava lá. Gosling foi incumbido de adaptar o Oak para a internet e em janeiro 1995 foi lançada uma nova versão do Oak que foi rebatizada para Java. A tecnologia Java tinha sido projetada para se mover por meio das redes de dispositivos heterogêneos, redes como a internet. Agora aplicações poderiam ser executadas dentro dos navegadores nos Applets Java e tudo seria disponibilizado pela internet instantaneamente. Foi o estático HTML dos navegadores que promoveu a rápida disseminação da dinâmica tecnologia Java. A velocidade dos acontecimentos seguintes foi assustadora, o número de usuários cresceu rapidamente, grandes fornecedores de tecnologia, como a IBM anunciaram suporte para a tecnologia Java.

Desde seu lançamento, em maio de 1995, a plataforma Java foi adotada mais rapidamente do que qualquer outra linguagem de programação na história da computação. Em 2004 Java atingiu a marca de 3 milhões de desenvolvedores em todo mundo. Java continuou crescendo e hoje é uma referência no mercado de desenvolvimento de software. Java tornou-se popular pelo seu uso na internet e hoje possui seu ambiente de execução presente em navegadores, mainframes, sistemas operacionais, celulares, palmtops, cartões inteligentes etc.

Padronização

Em 1997 a Sun Microsystems tentou submeter a linguagem a padronização pelos órgãos ISO/IEC e ECMA, mas acabou desistindo.[3][4][5] Java ainda é um padrão de fato, que é controlada através da JCP Java Community Process.[6] Em 13 de novembro de 2006, a Sun lançou a maior parte do Java como Software Livre sob os termos da GNU General Public License (GPL). Em 8 de maio de 2007 a Sun finalizou o processo, tornando praticamente todo o código Java como software de código aberto, menos uma pequena porção da qual a Sun não possui copyright.[7]

Características

A linguagem Java foi projetada tendo em vista os seguintes objetivos:

  • Orientação a objetos - Baseado no modelo de Simula67
  • Portabilidade - Independência de plataforma - "escreva uma vez, execute em qualquer lugar" ("write once, run anywhere")
  • Recursos de Rede - Possui extensa biblioteca de rotinas que facilitam a cooperação com protocolos TCP/IP, como HTTP e FTP
  • Segurança - Pode executar programas via rede com restrições de execução

Além disso, podem-se destacar outras vantagens apresentadas pela linguagem:

  • Sintaxe similar a C/C++
  • Facilidades de Internacionalização - Suporta nativamente caracteres Unicode
  • Simplicidade na especificação, tanto da linguagem como do "ambiente" de execução (JVM)
  • É distribuída com um vasto conjunto de bibliotecas (ou APIs)
  • Possui facilidades para criação de programas distribuídos e multitarefa (múltiplas linhas de execução num mesmo programa)
  • Desalocação de memória automática por processo de coletor de lixo
  • Carga Dinâmica de Código - Programas em Java são formados por uma coleção de classes armazenadas independentemente e que podem ser carregadas no momento de utilização

Licença

A Sun disponibiliza a maioria das distribuições Java gratuitamente e obtém receita com programas mais especializados como o Java Enterprise System. Em 13 de novembro de 2006, a Sun liberou partes do Java como software livre, sob a licença GNU General Public License.[8] A liberação completa do código fonte sob a GPL ocorreu em maio de 2007.[9]

Exemplos de código

Método main

O método main é onde o programa inicia. Pode estar presente em qualquer classe. Os parâmetros de linha de comando são enviados para o array de Strings chamado args.

public class OlaMundo {
   /**
   * Método que executa o programa
   * public = É visto em qualquer lugar da aplicação
   * static = é iniciado automaticamente pela JVM, sem precisar de uma instância
   * void = Método sem retorno (retorno vazio)
   * main = Nome do método, que é obrigatorio ser este. Recebe como parâmetro um array de String.
   * String[] args = Array de argumentos que podem ser repassados na chamada do programa.
   */
   public static void main(String[] args) {
      System.out.println("Olá, Mundo!"); //Imprime na tela a frase
   }
}

Classes

Exemplo:

public abstract class Animal {
   public abstract void fazerBarulho();
}
 
public class Cachorro extends Animal {
   public void fazerBarulho() {
      System.out.println("AuAu!");
   }
}
 
public class Gato extends Animal {
   public void fazerBarulho() {
      System.out.println("Miau!");
   }
}

O exemplo acima cria a classe Animal e duas classes derivadas de Animal. É importante observar que nas classes derivadas temos a redefinição do método fazerBarulho(). Esta redefinição é classificada como uma sobreposição (override) de métodos. O conceito de sobreposição somente pode ser identificado e utilizado quando temos classes dispostas em um relacionamento de herança.

Java não suporta herança múltipla, devido a possibilidade de uma classe pai ter um método com o mesmo nome de outra classe pai, e gerar possíveis falhas ao chamar o método, e todas as classes em Java derivam de da classe Object. A única possibilidade de se ver herança múltipla em Java é no uso de interfaces, pois uma classe pode herdar várias interfaces.

Classes internas

Java pode ter classes internas. Exemplos:

public class Cavalo extends Animal {
   public void fazerBarulho() {
      System.out.println("RIINCH!");
   }
 
   // Classe interna e privada. Existe só no contexto da classe "Cavalo".
   private class Parasita extends Animal { 
      public void fazerBarulho() {
         System.out.println("SQRRT");
      }
   }
}

Interfaces

Uma interface modela um comportamento esperado. Pode-se entendê-la como uma classe que contenha apenas métodos abstratos. Embora uma classe não possa conter mais de uma super classe, a classe pode implementar mais de uma interface. Exemplo:

public interface Pesado {
   double obterPeso();
}
 
public interface Colorido {
   Color obterCor();
}
 
public class Porco extends Animal implements Pesado, Colorido {
   public void fazerBarulho() {
      System.out.println("Óinc!");
   }
 
   // Implementação da interface Pesado
   public double obterPeso() {
      return 50.00;
   }
 
   // Implementação da interface Colorido
   public Color obterCor() {
      return Color.BLACK;
   }
 
   // Uma propriedade só do porco
   public boolean enlameado() {
      return true;
   }
}

Objetos anônimos

Podemos ter também objetos anônimos, aonde não é necessário instanciar o objeto em uma variável para utilizá-lo. Exemplo:

public class MostraBarulho {
   public static void main(String args[]) {
      new Cavalo().fazerBarulho(); // Objeto anônimo.
 
      // Abaixo um objeto e classe anônimos!
      new Animal() {
         public void fazerBarulho() {
            System.out.println("QUAC!");
         }
      }.fazerBarulho();
   }
}

Ferramentas

Frameworks

É possível utilizar frameworks para facilitar o desenvolvimento de aplicações. Dentre os mais utilizados pode-se destacar:

  • Hibernate ferramenta para ORM
  • Junit ferramenta para auxiliar na criação de testes unitários
  • Log4j ferramenta para facilitar a criação de logs na aplicação
  • Spring ferramenta que auxilia principalmente implementação de injeção de dependências e inversão de controle
  • Struts controlador MVC (Model 2) web

Ambientes de desenvolvimento

É possível desenvolver aplicações em Java através de vários ambientes de desenvolvimento integrado (IDEs). Dentre as opções mais utilizadas pode-se destacar:

  • BlueJ — um ambiente desenvolvido por uma faculdade australiana (considerado muito bom para iniciantes)
  • JCreator — (gratuito/shareware) — um ambiente desenvolvido pela Xinox (recomendado para programadores iniciantes)
  • jEdit — (recomendado para programadores iniciantes)
Emulador do Android no Eclipse, exibindo um simples "Hello World", escrito em JAVA e XML
IDEs completas (recomendado para programadores profissionais)
  • Eclipse — um projeto aberto iniciado pela IBM
  • IntelliJ IDEA (comercial) — uma IDE desenvolvida pela JetBrains
  • JBuilder — um ambiente desenvolvido pela empresa Borland
  • JDeveloper (gratuito OTN) — uma IDE desenvolvida pela empresa Oracle
  • NetBeans (software livre) — uma IDE desenvolvida pela Sun Microsystems
Outras IDEs (menos populares)
  • Gel (IDE) — open source
  • Greenfoot — bem parecido com o BlueJ
  • JGRASP — bom para intermediários, feito pela equipe do Projeto GRASP
  • Java Studio Creator/Enterprise (gratuito SDN) um ambiente criado pela empresa Sun Microsystems
  • Workshop for WebLogic (comercial/desenvolvedor) um ambiente criado pela empresa Oracle
  • WebSphere Studio Application Developer um ambiente criado pela empresa IBM

Extensões

Extensões em Java:

  • J2ME (Micro-Edition for PDAs and cellular phones)
  • J2SE (Standard Edition)
  • J3D (A high level API for 3D graphics programming)
  • JAAS (Java Authentication and Authorization Service)
  • JAIN (Java API for Integrated Networks)
  • Java Card
  • JMX (Java Management Extensions)
  • JavaFX
  • JSF (JavaServer Faces)
  • JSP (JavaServer Pages)
  • JavaSpaces
  • JCE (Java Cryptography Extension)
  • JDBC (Java Database Connectivity)
  • JDMK (Java Dynamic Management Kit)
  • JDO (Java Data Objects)
  • JEE (Enterprise Edition)
  • Jini (a network architecture for the construction of distributed systems)
  • Jiro
  • JMF (Java Media Framework)
  • JMI (Java Metadata Interface)
  • JMS (Java Message Service)
  • JNDI (Java Naming and Directory Interface)
  • JNI (Java Native Interface)
  • JOGL (A low level API for 3D graphics programming, using OpenGL)
  • JSML (Java Speech API Markup Language)
  • JXTA (open source-based peer-to-peer infrastructure)
  • MARF (Modular Audio Recognition Framework)
  • OSGi (Dynamic Service Management and Remote Maintenance)
  • SuperWaba (JavaVMs for handhelds)

Certificações

Existem 8 tipos de certificações[10] da Sun Microsystems para Java:

  • Sun Certified Enterprise Architect (SCEA)
  • Sun Certified Mobile Application Developer (SCMAD)
  • Sun Certified Developer For Java Web Services (SCDJWS)
  • Sun Certified Business Component Developer (SCBCD)
  • Sun Certified Web Component Developer (SCWCD)
  • Sun Certified Java Developer (SCJD)
  • Sun Certified Java Programmer (SCJP)
  • Sun Certified Java Associate (SCJA)

Cada certificação testa algum tipo de habilidade dentro da plataforma e linguagem Java. Todos os testes são realizados pela empresa Person VUE[11] e são reconhecidos internacionalmente.

Comunidade

A comunidade de desenvolvedores Java reúne-se em grupo denominados JUGs (Java User Groups). No Brasil o movimento de grupos de usuários expandiu-se bastante e tem formado alguns dos maiores grupos de usuários Java do mundo[carece de fontes?], como por exemplo o PortalJava, GUJ e o JavaFree.

Bibliografia

  • Harvey M. Deitel. Java: Como Programar. 6 ed. São Paulo: Pearson education do Brasil, 2005. 1097 p.
  • Apostila Java e Orientação a Objetos, licença Creative Commons, 7ª edição, pela Caelum.

Referências

  1. Java 5 catches up with C# (em inglês). Universidade de Oxford. Página visitada em 10 de janeiro de 2010.
  2. Why Microsoft's C# isn't (em inglês). CNET. Página visitada em 10 de janeiro de 2010.
  3. ↑ Java Study Group
  4. ↑ Why Java™ Was - Not - Standardized Twice
  5. ↑ What is ECMA--and why Microsoft cares
  6. ↑ Java Community Process website
  7. ↑ open.itworld.com - JAVAONE: Sun - The bulk of Java is open sourced
  8. Sun begins releasing Java under the GPL (em inglês). Página visitada em 6 de julho de 2010.
  9. JavaOne opening keynote notes and comments (em inglês). Página visitada em 6 de julho de 2010.
  10. ↑ Java Certification
  11. Person VUE.

Ver também

  • C♯
  • Microsoft .NET
  • Plataforma Java

Ligações externas

  • Página oficial (em inglês)
  • Página oficial (em português)
  • Tutoriais oficiais (em inglês)
  • GUJ - notícias, artigos e fórum (em português)
  • Java no Open Directory Project

Obtida de "http://pt.wikipedia.org/w/index.php?title=Java_(linguagem_de_programa%C3%A7%C3%A3o)&oldid=27810569"

MAIS INFORMAÇÕES DO SETOR DE SOFTWARE

Microsoft Office

article thumbnail

Microsoft Office Desenvolvedor Microsoft Plataforma x86 e x64 Lançad [ ... ]


Microsoft SharePoint Designer

Microsoft SharePoint Designer Desenvolvedor Microsoft Plataforma x86 e x64  [ ... ]


UML

article thumbnail

A Unified Modeling Language (UML) é uma linguagem de modelagem não proprietária de terceira gera [ ... ]


Software

article thumbnail


OpenOffice.org Writer. Software, logiciário ou suporte lógico é uma sequência de in [ ... ]


Outsourcing

 Outsourcing (em inglês, "Out" significa "fora" e "source" ou "sourcing" significa fonte)  [ ... ]


Web 2.0

article thumbnail

Web 2.0 é um termo criado em 2004 pela empresa americana O'Reilly Media[1] para designar uma segu [ ... ]


Zend Framework

article thumbnail

Zend Framework Logotipo do Zend Framework Desenvolvedor Zend Tech [ ... ]


Gestão de projetos

Gerência de projetos, gestão de projetos, gerenciamento de projetos ou ainda administração de pr [ ... ]


Ferramenta CASE

Ferramentas CASE (do inglês Computer-Aided Software Engineering) é uma classificação que abran [ ... ]


Apple

article thumbnail


Apple Tipo Empresa cotada em bolsa (NASDAQ: AAPL, LSE: 0HDZ, FWB: APC) Fu [ ... ]


Segurança da informação

article thumbnail

A Wikipédia possui o portal:
Portal das tecnologias de informação A segurança da  [ ... ]


Software como serviço

Software como serviço, do inglês Software as a service, é uma forma de distribuição e comerci [ ... ]


Nanotecnologia do carbono

article thumbnail

A nanotecnologia do carbono é o ramo da nanotecnologia que estuda a manipulação de estruturas de  [ ... ]


COA - Control Oriented Architecture

Control Oriented Architecture - COA é uma arquitetura de camadas de controle que permite configur [ ... ]


ISO da segurança da informação

ISO 27001 Origem: Wikipédia, a enciclopédia livre. ISO/IEC 27001 é um padrão para sistema de g [ ... ]


Software livre

article thumbnail

Ilustração frequentemente usada como logo para o Projeto GNU A Wikipédia possui  [ ... ]


Steve Jobs

article thumbnail

Steve Jobs Steve Jobs apresentando um iPhone 4 durante a Apple Worldwide Develo [ ... ]


PDA - Personal digital assistant

article thumbnail


PalmOne LifeDrive Personal digital assistants (PDAs ou handhelds), assistente pessoal di [ ... ]


Scrum

article thumbnail

O processo Scrum. O Scrum é um processo de desenvolvimento iterativo e incremental para  [ ... ]


Lotus Notes

article thumbnail

Lotus Tipo Corporação privada Indústria Software Produtos Ver lista com [ ... ]


Django (framework web)

Django Desenvolvedor Lawrence Journal-World Lançado em 21 de Julho de 2005  [ ... ]


Gestão do conhecimento

article thumbnail

A definição clássica de conhecimento. A Gestão do Conhecimento, do inglês KM - Knowled [ ... ]


Sistema de informação de gestão

Sistema de informação de gestão ou sistema de informações gerenciais (SIG; do inglês, manageme [ ... ]


Symfony

article thumbnail

Symfony

Projeto padrão do Symfony Desenvolvedor Sensio Labs Versão está [ ... ]


Software proprietário

Software proprietário ou não livre é aquele cuja cópia, redistribuição ou modificação sã [ ... ]


Software livre nos governos

Nos últimos anos a questão do software livre nos governos está na ordem do dia. Alguns governos c [ ... ]


Model-view-controller (MVC)

article thumbnail


Um diagrama simples exemplificando a relação entre Model, View e Controller. As linhas sól [ ... ]


Plone

article thumbnail

Plone

Screenshot da instalação padrão Desenvolvedor Alan Runyan, Alexander L [ ... ]


Desenvolvimento web

article thumbnail

Desenvolvimento web é o termo utilizado para descrever o desenvolvimento de sítios, na Internet  [ ... ]


Google

article thumbnail


Google Google Inc. Logotipo do Google Slogan “Don't be evil” [ [ ... ]


Modelagem dimensional

Modelagem dimensional é uma técnica de projeto lógico normalmente usada para data warehouses qu [ ... ]


Kohana Framework

Kohana é um framework para aplicações web de código aberto, escrito em PHP 5 que adota o padr [ ... ]


ISO/IEC 9126

article thumbnail

ISO/IEC 9126 é uma norma ISO para qualidade de produto de software, que se enquadra no modelo de qu [ ... ]


Teoria de sistemas

A teoria de sistemas estuda, de modo interdisciplinar, a organização abstrata de fenômenos, indep [ ... ]


CRM - Customer relationship management

Customer Relationship Management (CRM) é uma expressão em inglês que pode ser traduzida para a l [ ... ]


ITIL

Information Technology Infrastructure Library (ITIL) é um conjunto de boas práticas a serem aplica [ ... ]


Administração de dados

Administração de dados é a função responsável por desenvolver e administrar de modo central [ ... ]


Tecnologia móvel

Tecnologia móvel Toda tecnologia que permite seu uso durante a movimentação do usuário é uma t [ ... ]


Git - sistema de controle de versão

article thumbnail

Origem: Wikipédia, a enciclopédia livre. Git Desenvolvedor Linus Torvalds, Ju [ ... ]


ERP

Sistemas Integrados de Gestão Empresarial (SIGE ou SIG), em inglês Enterprise Resource Planning (E [ ... ]


Steve Ballmer

article thumbnail

Steve Ballmer Nome completo Steven Anthony Ballmer Nascimento 24 de Março [ ... ]


Banco de dados

article thumbnail

Bancos de dados, ou bases de dados (em Portugal), são coleções de informações que se relacion [ ... ]


Otimização em engenharia de software

A Otimização em engenharia de software é uma recente área de pesquisa que trata da aplicação [ ... ]


Gestão estratégica de empresas

Gestão estratégica de empresas (em língua inglesa: strategic enterprise management — SEM) é um [ ... ]


Sistemas dinâmicos

article thumbnail

O atrator de Lorenz é um exemplo de sistema dinâmico não-linear. O estudo deste sistema incen [ ... ]


Processo de desenvolvimento de software

Um processo de desenvolvimento de software é um conjunto de atividades, parcialmente ordenadas, c [ ... ]


EAD - Educação a distância

Tele-educação, Educação a Distância ou Ensino a Distância (EaD) [nota 1] é a modalidade de en [ ... ]


Business Intelligence - Inteligência empresarial

Inteligência empresarial (em inglês Business Intelligence), refere-se ao processo de coleta, orga [ ... ]


Teste de penetração

article thumbnail

O teste de penetração é um método que avalia a segurança de um sistema de computador ou de um [ ... ]


Software educativo

article thumbnail

Software educativo é um software cujo principal propósito é o ensino ou o auto-aprendizado.[1]  [ ... ]


Artigos Relacionados

Pluriverso - Inteligência em Tecnologia

Pluriverso - Inteligência em Tecnologia


Ed.Centro Sul, 2°Andar, SCIA, Qd. 14, Conj. 07, Lt 1, S. Ind.
CEP: 71.250-135, Brasília-DF.  
Como Chegar
| Atendimento  


+55 (61) 4141.5555

Serviços

Desenvolvimento de Software
Oursourcing de T.I
Consultoria em Tecnologia
Licitação com o Governo

Produtos

ERP, CRM, Colaboração
Cloud Computing

Soluções
Soluções em Outsourcing de Tecnologia
Integração de Software
Avaliação de nível tecnológico
Cálculo de custos de T.I
Softwares customizados


Porque escolher a Pluriverso

Blog Corporativo
Blog do Software

Conheça a Pluriverso
quem somos
verticais de atuação
portifólio
casos de sucesso

Atendimento
contatos
sala de imprensa
como chegar
Trabalhe conosco

desenvolvimento de software