You are on page 1of 8

Java (linguagem de programao) Wikipdia, a enciclopdia livre https://pt.wikipedia.

org/wiki/Java_(linguagem_de_programao)

Java (linguagem de programao)


Origem: Wikipdia, a enciclopdia livre.

Java uma linguagem de programao interpretada orientada


a objetos desenvolvida na dcada de 90 por uma equipe de Java
programadores chefiada por James Gosling, na empresa Sun
Microsystems. Diferente das linguagens de programao
convencionais, que so compiladas para cdigo nativo, a
linguagem Java compilada para um bytecode que
interpretado por uma mquina virtual (Java Virtual Machine,
mais conhecida pela sua abreviao JVM). A linguagem de
programao Java a linguagem convencional da Plataforma
Java, mas no a sua nica linguagem.

ndice
1 Histria
1.1 Padronizao
1.2 Aquisio pela Oracle Duke, o mascote do Java
2 Caractersticas
Paradigma Orientao a objetos (baseada
2.1 Licena em classes), estruturada,
3 Exemplos de cdigo imperativa, genrica,
3.1 Mtodo main funcional, reflectiva,
concorrente
3.2 Classes
3.3 Interfaces Surgido em 1995
3.4 Objetos annimos ltima verso 8.0.77 (23 de maro de 2016)
3.5 Programao funcional Criado por James Gosling e Sun
4 Ferramentas Microsystems
4.1 Frameworks Estilo de esttica, forte
4.2 Ambientes de desenvolvimento tipagem:
4.3 Extenses Compiladores GCJ, Javac
5 Certificaes Influenciada Ada 83, C++, C,[1] Eiffel,
6 Comunidade por Generic Java, Mesa, Modula-3,
7 Referncias Object Pascal, Objective-C,
8 Ver tambm UCSD Pascal, Smalltalk
9 Bibliografia Influenciou Ada 2005, BeanShell, C,[2]
10 Ligaes externas Clojure, D, ECMAScript,
Fantom, Groovy, J#,
JavaScript, PHP, Python, Scala
Licena: GNU General Public
Histria License/Java Community
Process

Em 1991, na Sun Microsystems, foi iniciado o Green Project, Pgina oficial https://www.java.com
o bero do Java, uma linguagem de programao orientada a
objetos. Os mentores do projeto eram Patrick Naughton, Mike Sheridan, e James Gosling. Eles acreditavam
que, eventualmente, haveria uma convergncia dos computadores com os equipamentos e eletrodomsticos
frequentemente usados pelas pessoas no seu dia-a-dia.

1 de 8 25/08/2017 18:58
Java (linguagem de programao) Wikipdia, a enciclopdia livre https://pt.wikipedia.org/wiki/Java_(linguagem_de_programao)

Para provar a viabilidade desta ideia, 13 pessoas trabalharam arduamente durante 18 meses. No vero de
1992 eles emergiram de um escritrio de Sand Hill Road, no Menlo Park, com uma demonstrao funcional
da ideia inicial. O prottipo se chamava *7 (l-se Star Seven), um controle remoto com uma interface
grfica 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 usurio a utilizar o equipamento.
O *7 tinha a habilidade de controlar diversos dispositivos e aplicaes. James Gosling especificou uma nova
linguagem de programao para o *7. Gosling decidiu batiz-la de Oak, que quer dizer carvalho, uma
rvore que ele podia observar quando olhava atravs da sua janela.

O prximo passo era encontrar um mercado para o starseven. A equipe achava que uma boa ideia seria
controlar televises e vdeo por demanda com o equipamento. Eles construram uma demonstrao chamada
de MovieWood, mas infelizmente era muito cedo para que o vdeo por demanda bem como as empresas de
TV a cabo pudessem viabilizar o negcio. A ideia que o *7 tentava vender, hoje j realidade em programas
interativos e tambm na televiso digital. Permitir ao telespectador interagir com a emissora e com a
programao em uma grande rede de cabos, era algo muito visionrio 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, no era mais necessrio construir a infraestrutura para a rede, ela
simplesmente estava l. Gosling foi incumbido de adaptar o Oak para a internet e em janeiro 1995 foi
lanada uma nova verso do Oak que foi rebatizada para Java. A tecnologia Java tinha sido projetada para
se mover por meio das redes de dispositivos heterogneos, redes como a internet. Agora aplicaes
poderiam ser executadas dentro dos navegadores nos Applets Java e tudo seria disponibilizado pela internet
instantaneamente. Foi o esttico HTML dos navegadores que promoveu a rpida disseminao da dinmica
tecnologia Java. A velocidade dos acontecimentos seguintes foi assustadora, o nmero de usurios cresceu
rapidamente, grandes fornecedores de tecnologia, como a IBM anunciaram suporte para a tecnologia Java.

Desde seu lanamento, em maio de 1995, a plataforma Java foi adotada mais rapidamente do que qualquer
outra linguagem de programao na histria da computao. Em 2004 Java atingiu a marca de 3 milhes de
desenvolvedores em todo mundo. Java continuou crescendo e hoje uma referncia no mercado de
desenvolvimento de software. Java tornou-se popular pelo seu uso na internet e hoje possui seu ambiente de
execuo presente em navegadores, mainframes, sistemas operacionais, celulares, palmtops, cartes
inteligentes etc.

Padronizao

Em 1997 a Sun Microsystems tentou submeter a linguagem a padronizao pelos rgos ISO/IEC e ECMA,
mas acabou desistindo.[3][4][5] Java ainda um padro de fato, que controlada atravs da JCP Java
Community Process.[6] Em 13 de novembro de 2006, a Sun lanou 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 cdigo Java como software de cdigo aberto, menos uma pequena
poro da qual a Sun no possui copyright.[7]

Aquisio pela Oracle

Em 2009 a Oracle Corporation adquire a empresa responsvel pela linguagem Java, a Sun Microsystems,
por US$ 7,4 bilhes, com o objetivo de levar o Java e outros produtos da Sun ao dispor dos consumidores.

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

2 de 8 25/08/2017 18:58
Java (linguagem de programao) Wikipdia, a enciclopdia livre https://pt.wikipedia.org/wiki/Java_(linguagem_de_programao)

Orientao a objetos - Baseado no modelo de Simular


Portabilidade - Independncia de plataforma - "escreva uma vez, execute em qualquer lugar" ("write
once, run anywhere")
Recursos de Rede - Possui extensa biblioteca de rotinas que facilitam a cooperao com protocolos
TCP/IP, como HTTP e FTP
Segurana - Pode executar programas via rede com restries de execuo

Alm disso, podem-se destacar outras vantagens apresentadas pela linguagem:

Sintaxe similar a C/C++/C#


Facilidades de Internacionalizao - Suporta nativamente caracteres Unicode
Simplicidade na especificao, tanto da linguagem como do "ambiente" de execuo (JVM)
distribuda com um vasto conjunto de bibliotecas (ou APIs)
Possui facilidades para criao de programas distribudos e multitarefa (mltiplas linhas de execuo
num mesmo programa)
Desalocao de memria automtica por processo de coletor de lixo
Carga Dinmica de Cdigo - Programas em Java so formados por uma coleo de classes
armazenadas independentemente e que podem ser carregadas no momento de utilizao

Licena

A Sun disponibiliza a maioria das distribuies Java gratuitamente e obtm 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 licena GNU General Public License.[8] A liberao completa do cdigo fonte
sob a GPL ocorreu em maio de 2007.[9]

Exemplos de cdigo
Mtodo main

O mtodo main onde o programa inicia. Pode estar presente em qualquer classe. Os parmetros de linha de
comando so enviados para o array de Strings chamado args.

public class OlaMundo {


/**
* Mtodo que executa o programa
* public = visto em qualquer lugar da aplicao. o modificador de acesso
* static = iniciado automaticamente pela JVM, sem precisar de uma instncia
* void = Mtodo sem retorno (retorno vazio)
* main = Nome do mtodo, que obrigatrio ser este. Recebe como parmetro 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();
}

3 de 8 25/08/2017 18:58
Java (linguagem de programao) Wikipdia, a enciclopdia livre https://pt.wikipedia.org/wiki/Java_(linguagem_de_programao)

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 redefinio do mtodo fazerBarulho(). Esta redefinio classificada como uma
sobreposio (override) de mtodos. O conceito de sobreposio somente pode ser identificado e utilizado
quando temos classes dispostas em um relacionamento de herana.

Java no suporta herana mltipla, devido a possibilidade de uma classe pai ter um mtodo com o mesmo
nome de outra classe pai, e gerar possveis falhas ao chamar o mtodo, e todas as classes em Java derivam
da classe Object. A nica possibilidade de se ver herana mltipla em Java no uso de interfaces, pois uma
classe pode implementar vrias interfaces.

Interfaces

Uma interface modela um comportamento esperado. Pode-se entend-la como uma classe que contenha
apenas mtodos abstratos. Embora uma classe no 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!");
}

// Implementao da interface Pesado


public double obterPeso() {
return 50.00;
}

// Implementao da interface Colorido


public Color obterCor() {
return Color.BLACK;
}

// Uma propriedade s do porco


public boolean enlameado() {
return true;
}
}

Objetos annimos

Podemos ter tambm objetos annimos, onde no necessrio instanciar o objeto em uma varivel para
utiliz-lo. Exemplo:

public class MostraBarulho {


public static void main(String args[]) {

4 de 8 25/08/2017 18:58
Java (linguagem de programao) Wikipdia, a enciclopdia livre https://pt.wikipedia.org/wiki/Java_(linguagem_de_programao)

new Cavalo().fazerBarulho(); // Objeto annimo.

// Abaixo um objeto e classe annimos!


new Animal() {
public void fazerBarulho() {
System.out.println("QUAC!");
}
}.fazerBarulho();
}
}

Programao funcional

A partir da verso 8, o Java adiciona aspectos de linguagem funcional, permitindo utilizar tcnicas
funcionas, como mapeamento, reduo, bem como tratar funes como variveis. Para tanto, a linguagem
utiliza de interfaces para esse tipo de manipulao.

Exemplo:

public class Main {

public static void main(String[] args) {


// Lista de paradigmas
List<String> paradigmas = new ArrayList<>();

// Adiciona paradigmas
paradigmas.add("Genrico (1.5)");
paradigmas.add("Funcional (8)");

// Abre uma stream


paradigmas.stream()
// Faz todos os textos na lista ficarem em maisculo
.map(String::toUpperCase);
// Faz loop em todos paradigmas em maisculo.
.forEach(paradigma System.out.println(paradigma)); // ou .forEach(System.out::println);
}
}

Ferramentas
Frameworks

possvel utilizar frameworks para facilitar o desenvolvimento de aplicaes, dos quais os mais utilizados
podem-se destacar:

Hibernate ferramenta para ORM


Junit ferramenta para auxiliar na criao de testes unitrios
Log4j ferramenta para facilitar a criao de logs na aplicao
Spring ferramenta que auxilia principalmente implementao de injeo de dependncias e inverso
de controle
Struts controlador MVC (Model 2) web

Ambientes de desenvolvimento

possvel desenvolver aplicaes em Java atravs de vrios ambientes de desenvolvimento integrado


(IDEs). Dentre as opes 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

5 de 8 25/08/2017 18:58
Java (linguagem de programao) Wikipdia, a enciclopdia livre https://pt.wikipedia.org/wiki/Java_(linguagem_de_programao)

programadores iniciantes)
jEdit (recomendado para programadores iniciantes)
Eclipse (recomendado para programadores fluentes)

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 Emulador do Android no Eclipse, exibindo
pela empresa Oracle um simples "Hello World", escrito em JAVA e
NetBeans (software livre) uma IDE desenvolvida pela XML
Sun Microsystems

Outras IDEs (menos populares)

Gel (IDE) open source


Greenfoot bem parecido com o BlueJ
JGRASP bom para intermedirios, 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

Extenses

Extenses em Java:

JEE (Enterprise Edition)


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

Certificaes

6 de 8 25/08/2017 18:58
Java (linguagem de programao) Wikipdia, a enciclopdia livre https://pt.wikipedia.org/wiki/Java_(linguagem_de_programao)

Existem 8 tipos de certificaes[10] da Oracle para Java:

Oracle Certified Enterprise Architect (OCEA)


Oracle Certified Mobile Application Developer (OCMAD)
Oracle Certified Developer For Java Web Services (OCDJWS)
Oracle Certified Business Component Developer (OCBCD)
Oracle Certified Web Component Developer (OCWCD)
Oracle Certified Java Developer (OCJD)
Oracle Certified Java Programmer (OCJP)
Oracle Certified Java Associate (OCJA)

Cada certificao testa algum tipo de habilidade dentro da plataforma e linguagem Java. Todos os testes so
realizados pela empresa Person VUE[11] e so reconhecidos internacionalmente.

Comunidade
A comunidade de desenvolvedores Java rene-se em grupo denominados JUGs (Java User Groups). No
Brasil o movimento de grupos de usurios expandiu-se bastante e tem formado alguns dos maiores grupos
de usurios Java do mundo[12], como por exemplo o PortalJava, GUJ e o JavaFree.

Referncias
7. open.itworld.com - JAVAONE: Sun - The bulk of
1. Java 5 catches up with C# Java is open sourced (http://open.itworld.com
(http://www.barrycornelius.com/papers/java5 /4915/070508opsjava/page_1.html)
/onefile/) (em ingls). Universidade de Oxford. 8. Sun begins releasing Java under the GPL
Consultado em 10 de janeiro de 2010 (http://www.fsf.org/news/fsf-welcomes-
2. Why Microsoft's C# isn't (http://news.cnet.com gpl-java.html) (em ingls). Consultado em 6 de
/2008-1082-817522.html) (em ingls). CNET. julho de 2010
Consultado em 10 de janeiro de 2010 9. JavaOne opening keynote notes and comments
3. Java Study Group (http://www.open-std.org (http://rollerweblogger.org/roller/entry
/JTC1/SC22/JSG/) /javaone_opening_keynote_notes) (em ingls).
4. Why Java Was - Not - Standardized Twice Consultado em 6 de julho de 2010
(http://csdl2.computer.org/comp/proceedings/hicss 10. Java Certification (http://www.sun.com/training
/2001/0981/05/09815015.pdf) /certification/java/index.xml)
5. What is ECMA--and why Microsoft cares 11. Person VUE (http://www.pearsonvue.com)
(http://techupdate.zdnet.com/techupdate/stories 12. Profissao Java - Pgina 13- Java no Brasil
/main/0,14179,2832719,00.html) (http://www.profissaojava.com.br/arquivos
6. Java Community Process website /ProfissaoJava-Abertura.pdf)
(http://www.jcp.org/en/home/index)

Ver tambm
C
Microsoft .NET
Plataforma Java

Bibliografia
Harvey M. Deitel (2005). Java: Como Programar 6 ed. So Paulo: Pearson education do Brasil.
1097 pginas
Apostila Java e Orientao a Objetos (http://www.caelum.com.br/apostila-java-orientacao-objetos/),

7 de 8 25/08/2017 18:58
Java (linguagem de programao) Wikipdia, a enciclopdia livre https://pt.wikipedia.org/wiki/Java_(linguagem_de_programao)

licena Creative Commons, 7 edio, pela Caelum - Ensino e Inovao.


Patrick Naughton, Dominando o Java, Guia Autorizado da Sun Microsystems, Editora Makron Books,
1997, Osborne, ISBN 80025-75540
Brian Jepson, Java Database Programming Master Next Generation Web Database Techniques, 1997,
Editora: Wiley Computer Publishing, ISBN 0-471-16518-2

Ligaes externas
Website oficial (http://www.oracle.com/technetwork/java/index.html) (em ingls)
Website oficial (http://www.oracle.com/br/technologies/java/index.html) (em portugus)
Tutoriais oficiais (http://download.oracle.com/javase/tutorial/) (em ingls)
Java (https://dmoztools.net/Computers/Programming/Languages/Java) no DMOZ

Obtida de "https://pt.wikipedia.org/w/index.php?title=Java_(linguagem_de_programao)&
oldid=49537706"

Esta pgina foi editada pela ltima vez (s) 12h03min de 9 de agosto de 2017.
Este texto disponibilizado nos termos da licena Creative Commons - Atribuio - Compartilha
Igual 3.0 No Adaptada (CC BY-SA 3.0); pode estar sujeito a condies adicionais. Para mais
detalhes, consulte as condies de uso.

8 de 8 25/08/2017 18:58