Você está na página 1de 26

Libertando o Java

Paloma Costa
paloma.costa@gmail.com
Paloma Costa
✔Desenvolvedora Java/J2EE
✔Técnica em Processamentos de Dados

✔Estudante de Computação Licenciatura

✔Integrante da Coordenação Software Livre e

Fórum Internacional de Software Livre


✔Usuária GNU/Linux desde 2001

✔Participante do Portal Java

http://javawoman.objectis.net
Objetivos
Tem como objetivos mostrar as novas tendências e
os caminhos de Java.

A Orientação a Objetos nas linguagens.

Padrões de compatibilidade.

Apresentar os diversos projetos que estão sendo


criados pela comunidade.

Java e desenvolvimento Software livre,


compatibilidade sob licença livre.

Bom aprendizado para todos!


As Tendências e os Caminhos
-Java no Ambiente Servidor
Tecnologias servidoras, incluindo J2EE em
geral, JSP, Servlets, JSF e EJB.

- Desenvolvimento Desktop
As Tecnologias e APIs para a criação de
aplicações locais com Java.

- Java em pequenos dispositivos


O uso de Java em plataformas móveis com
J2ME e JavaCard.

Paloma Costa paloma.costa@gmail.com


Os principais Projetos Java
✔Em Brasília temos o Banco do Brasil, a
Caixa Econômica Federal, o Serpro
(Serviço Federal de Processamento de
Dados) e o Banco Central.

✔Encubadoras de software, fábricas de


software para centros maiores como o
CESAR (Centro de Estudos avançados de
Recife).

Paloma Costa paloma.costa@gmail.com


Padrões de Compatibilidade
Liberdade de escolha – JCP

Especificações existentes – Sun, IBM,


BEA e Apple

Testes de compatibilidade – JCK


Tiger – 45 mil testes

Foco – compatibilidade e
multiplataforma
Paloma Costa paloma.costa@gmail.com
✔Combater a pirataria de programas de computador estimulando o uso de
softwares livres em pequenas empresas e usuários domésticos;
✔Formar uma rede de técnicos cidadãos altamente capacitados em
tecnologia de software livre;
✔Ampliar a empregabilidade e capacidade de prestação de serviços por
jovens de baixa renda;
Criar um Portal do Jovem Empreendedor que se torne uma referência para

a sociedade, sobretudo no suporte à micro-informática e no software livre.


Certificar os jovens que tiverem o melhor desempenho no curso;

Como se trata de um projeto-piloto, verificar a viabilidade e sucesso das


ações propostas na prática;


Evoluir no projeto, ampliando o número de cidades beneficiadas e a

quantidade de participantes.
fonte:http://www.soujava.org.br/cms/tecnicocidadao
Javali

Promover a geração de tecnologia, para fortalecer o mercado


de desenvolvimento e garantir nossa independência
tecnológica;
Promover a geração de conhecimento dentro de universidades
e centros de pesquisa;
Auxiliar o Governo Brasileiro no desenvolvimento de
aplicações e na busca pela democratização digital;
Ampliar atividades dos Grupos de Usuários e outras iniciativas
da comunidade de desenvolvedores Java nacional;
Posicionar o Brasil no mercado mundial como fornecedor de
tecnologia e conhecimento tecnológico;
Promover a integração dos desenvolvedores brasileiros com a
comunidade de desenvolvimento internacional.
fonte:http://www.javali.org.br/
Orientação a Objetos

Ao contrário de C++, que é uma linguagem híbrida,


Java é uma linguagem orientada a objetos;

Com a exceção dos tipos primitivos da linguagem (int,


float, etc.), a maior parte dos elementos de um
programa Java são objetos.

O código é organizado em classes, que podem


estabelecer relacionamentos de herança simples entre
si.

Somente a herança simples é permitida em Java. (Há


uma forma de "simular" herança múltipla em Java com
o uso interfaces.

Paloma Costa paloma.costa@gmail.com


Simplicidade

Java, é muito parecida com C++, mas muito mais


simples;

Java não possui sobrecarga de operadores, structs,


unions, aritmética de ponteiros, herança múltipla,
arquivos .h;

Diretivas de pré-processamento e a memória alocada


dinamicamente é gerenciada pela própria linguagem,
que usa algoritmos de garbage collection para
desalocar regiões de memória que não estão mais em
uso.

Paloma Costa paloma.costa@gmail.com


Processamento Distribuído

Chamadas a funções de acesso remoto (sockets) e os


protocolos Internet mais comuns (HTTP, FTP, Telnet,
etc.) são suportadas em Java, de forma que a
elaboração de aplicativos baseados em arquiteturas
cliente-servidor é facilmente obtida.

Paloma Costa paloma.costa@gmail.com


MultiThreading
Java tem o suporte a multitarefa embutido na
linguagem;

Um programa Java pode possuir mais de uma linha de


execução (thread).

Exemplo: cálculos extensos, que em geral demandam


muito tempo do processador, podem ser escritos em
uma thread, e a parte de interface com o usuário, que
depende mais dos periféricos de I/O que do
processador, pode ser executada em outra thread.

Java fornece diversos recursos de sincronização de


processos que tornam a programação mais simples.

Paloma Costa paloma.costa@gmail.com


Exceções
Em C++, por exemplo, a simples tentativa de abertura
de um arquivo inexistente pode obrigar ao
programador a reiniciar o computador.

Programas Java, contudo, não "dão pau" no


computador, já que a máquina virtual Java faz uma
verificação em tempo de execução quanto aos acessos
de memória, abertura de arquivos e uma série de
eventos que podem gerar uma "travada" em outras
linguagens, mas que geram exceções em programas
Java.

Paloma Costa paloma.costa@gmail.com


Garbage Colletor
Em Java, os programadores não necessitam
preocupar-se com o gerenciamento de memória como
em C++.

Java, utiliza-se do garbage collection (coleta de lixo).


Sua função é a de varrer a memória de tempos em
tempos, liberando automaticamente os blocos que não
estão sendo utilizados.

Se por um lado isso pode deixar o aplicativo um pouco


mais lento, por manter uma thread paralela que dura
todo o tempo de execução do programa, evita
problemas como referências perdidas e avisos de falta
de memória quando sabe-se que há megas e megas
disponíveis na máquina.

Paloma Costa paloma.costa@gmail.com


Machine Independente

Uma das características de Java que tornou-a ideal


para seu uso na elaboração de aplicativos distribuídos
foi a sua independência de plataforma.

Microprocessadores cuja linguagem nativa é o Java: o


picojava, microjava e ultrajava.

JVM - Java Virtual Machine, é um emulador de


processador.

Paloma Costa paloma.costa@gmail.com


JVM - Java Virtual Machine

O conjunto de instruções da JVM é otimizado para ser


pequeno e compacto, tendo sido elaborado para ser
uma espécie de processador RISC virtual: a rapidez da
interpretação às vezes é sacrificada para garantir esse
reduzido conjunto de instruções.

No caso de Applets, os browsers que suportam Java já


contêm em si uma JVM que interpreta os bytecodes
das Applets.

Paloma Costa paloma.costa@gmail.com


Primeira tentativa da Sun
A primeira tentativa da Sun deveria ter sido
implementada em C++.

Mas em conseqüência de compilações horríveis


com compiladores uma lista cada vez maior de
problemas com o C++ e principalmente
vazamentos de memória e vários problemas de
herança;

A Sun enterrou o C++ e implementou uma nova


linguagem, o Java.

Paloma Costa paloma.costa@gmail.com


Características
✔Java é uma linguagem de alto nível, com sintaxe
extremamente similar à do C++;

✔Diversas características herdadas de outras


linguagens, como Smalltalk e Modula-3.

✔É antes de tudo uma linguagem simples (é mesmo!);


✔Fortemente tipada;

✔Independente de arquitetura;

✔Robusta;

✔Segura;

✔Extensível e bem estruturada;

✔Distribuída;

✔Multithreaded e com garbage collection.

Paloma Costa paloma.costa@gmail.com


Paradigma entre as linguagens
As linguagens que aceitam este paradigma, como Java e
C++, seguem a mesma filosofia básica, mas diferem em
sintaxe e estilo.

As linguagens orientadas a objetos oferecem muitas


vantagens sobre as linguagens procedurais tradicionais.

Como os objetos encapsulam dados e funções


relacionados em unidades coesas:

✔ É fácil localizar dependências de dados;


✔ Isolar efeitos de alterações;
✔ Realizar outras atividades de manutenção;
✔ E talvez o mais importante, as linguagens OO
facilitam a reutilização.

Paloma Costa paloma.costa@gmail.com


Pesquisa Portal Java

Qual recurso de outras linguagens você queria


ter no Java?

Ponteiros 12,55%(92)
Herança múltipla 20,46%(150)
Compilação para código nativo opcional*AOT 32,88%(241)
Não quero mais nada! Java está bom demais assim! 30,42%(223)
Outro recurso não listado 2,73%(20)
Nada 0.95%(7)

Fonte:http://www.portaljava.com.br/home/modules.php?name=Surveys&op=results&pollI
D=62
Comunidades

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.
Como desenvolver em Java?
Para ser um desenvolvedor da tecnologia Java, é
necessário ter conhecimentos sobre o conceito de
Orientação a Objeto.

Download de um Kit de Desenvolvimento do Java

IDEs para facilitar o desenvolvimento de programas:


✔ NetBeans (patrocinado pela Sun Microsystems)

Eclipse (patrocinado pela IBM).

Para desenvolvedores em UML, as dicas são os


modeladores Umbrello, DIA e principalmente o Jude.

Paloma Costa paloma.costa@gmail.com


Referências
http://java.sun.com/ Página oficial da LinguagemHome-Page de James Gosling

http://java.sun.com/jugs/ Java User Groups

http://www.netbeans.org/ Sun – NetBeansIDE

http://www.eclipse.org Elipse IDE

http://uml.sourceforge.net/index.php Umbrello UML Modeller

http://www.gnome.org/projects/dia/ DIA

http://objectclub.esm.co.jp/Jude/ JUDE UML Modelling tool

http://www.javafree.com.br/ JavaFree Comunidade Java no BRASIL

http://www.portaljava.com.br Portal JAVA Brasil

http://www.guj.com.br/ Grupo de Usuários JAVA

http://javapt.pt.vu/ Forum Portugues de Java

http://www.java.pt/ O ponto de encontro da comunidade portuguesa de Java


http://java.sun.com/features/1999/05/birthday.html Como nasceu o Java

http://www.javaalmanac.com/ The Java Developers Almanac

http://www.javaman.com.br/restaurante/transcripts/trans_20030225.html - Bruno Souza


Fórum Internacional de
Software Livre 2006

19 a 22 de abril, Centro de Eventos FIERGS


Porto Alegre/RS
Muito obrigada!

Paloma Costa
paloma.costa@gmail.com
http://javawoman.objectis.net

Você também pode gostar