SlideShare uma empresa Scribd logo
1 de 50
Java: O que está por vir?
Waldir Ribeiro Pires Jr
wpjr2@yahoo.com
Consultor, Eteg TI
Sumário
• Introdução
• Revendo o passado
• Apresentando o presente
• Avaliando a tecnologia
• O que está por vir
• Conclusões
Sumário
• Introdução
• Revendo o passado
• Apresentando o presente
• Avaliando a tecnologia
• O que está por vir
• Conclusões
Introdução
• Como prever o futuro?
Introdução
Objetivos
Visão
O estado da arte
da tecnologia
As tecnologias que
estão por vir
As tendências
do mercado
Concorrência
Avaliação
Paradigmas de
programação
O amadurecimento
da tecnologia
Comunidades
Avaliando o passado
O resumo das principais
tecnologias atuais
Uma previsão do que
está por vir
Avaliação de mercado das
principais linguagens de
programação
Sumário
• Introdução
• Revendo o passado
• Apresentando o presente
• Avaliando a tecnologia
• O que está por vir
• Conclusões
Revendo o Passado (1995 a 2008)
1995 20082000 20041998 2002 2006
JavaCard 1.0
Lançamento
da plataforma
J2ME
JavaCard
2.1
Divisão nas
Plataformas
J2SE
J2ME
J2EE
JavaTV
API
Lançamento
do primeiro
celular com
J2ME
Motorola
i3000
WTK 1.0
Mobile
Media
API
MIDP
2.0
JTWI
WTK 2.1
WMA 2.0
AMS
i18n
WTK 2.3
MSA
CDC
Toolkit
Plataforma
Sun SPOT OS
WTK 2.5
WTK 3.0
BluRay API
Java Servlets
DK 1.0
EJB 1.0
Java
Web Server
1.0
Servlets 2.0
Java
Server
Pages
1.0
Plataforma
J2EE
Java APIs
For XML
Servlets 2.3
EJB 2.0
JSP 1.2
Plataforma
J2EE 1.3
JSTL
JDBC 3.0
JTA Servlets 2.4
JCA
1.5
Plataforma
J2EE 1.4
JSP
2.0
EJB
2.1
JMS
Plataforma
JavaEE 5.0
Servlets 2.5
JSP 2.1
JSF 1.2
EJB 3.0
JDBC 4.0
Hibernate
Spring Struts
2009
JDK 1.0
JDK 1.2
J2SE
JFC
Swing
JCP
Formalizado
Java
Hotspot
Lançamento
do JDK 1.3
J2SE 1.3
J2SE para
Linux
Lançamento
do JDK 1.4
J2SE 1.4
Lançamento
do JDK 5.0
JSE 5.0
Java
Compiler
API
Plataforma
JavaSE 6.0
JavaFX
OpenJDK
Sumário
• Introdução
• Revendo o passado
• Apresentando o presente
• Avaliando a tecnologia
• O que está por vir
• Conclusões
Apresentando o Presente
• Quais seriam alguns dos principais
elementos no contexto global que
poderíamos utilizar como um
“termômetro” da tecnologia Java ?
• Possíveis respostas
• Conferências JavaOne
• Java Community Process e Java
Specification Requests
• Número de projetos realizados
• Oportunidades de emprego
• Artigos e periódicos em revistas
Resumo JavaOne 2008: JavaSE
• Estatísticas
• 7M de desenvolvedores, 750K downloads/mês do JDK, 48
M downloads do JRE
• Apresentações de demos utilizando JavaFX Script
em Applets tanto em navegadores quando no
desktop
• JVM com suporte a outras linguagens
• Glassfish (Ruby, Groovy, Rails e Grails)
• Lançamento do JavaSE 7.0 prevista para meiados
de 2009
• Suporte a diversas linguagens de scripts
• Programação multicore
Resumo JavaOne 2008: JavaEE
• Foco na simplicidade
• Mais anotações, menos descritores de
desdobramento
• Proposta de perfis (“rightsizing”)
• Pacotes de APIs com objetivos específicos
• Pontos de extensão, aumentando a flexibilidade
com outros arcabouços e bibliotecas
• Tecnologias de destaque
• Ruby, AJAX, JavaFX, Grails, GWT
• RIA, Adobe Flex e Java
Resumo JavaOne 2008
JCP: Timeline
Java Community Process e Java
Specification Request
API JSR Estado
SAF 296 EGF
Beans Binding 295 EGF
Beans Validation 303 EDR
Java Module System 277 EDR
NIO 203 EDR
Javadoc Update 260 EGF
Units 275 EDR
Date and Time API 310 EGF
Anotations 308 EDR
WS-JMX 262 PR
JMX 2.0 250 EDR
Modularity 294 EDR
JavaSE API JSR Estado
MIDP 3.0 271 PR
MBS API 272 FAB
Service Connection 279 PR
IMS Services 281 FR
SVG 2.0 287 PFD
Location API 2.0 293 FR
Mobile 3D 2.0 297 PR
Network Mobility 307 EDR
JavaME
API JSR Estado
JavaEE 6.0 316 EDR
JSF 2.0 314 EDR2
EJB 3.1 318 PR
JPA 2.0 317 PR
Servlets 3.0 315 EDR
JCA 1.6 322 EDR
JavaEE
EGF Expert Group Formation
EDR Early Draft Review
PR Public Review
PFD Proposed Final Draft
FAB Final Approval Ballot
FR Final Release
Legenda
Bom Ritmo
Lento, mas progredindo
Muito lento
Lançamentos Recentes: JavaSE
(2007-2008)
• JavaSE 6.0 SDK
• Pacote javax.script com suporte a extensão para outras
linguagens script (JSR 223)
• Jrunscript, baseado em JavaScript, (Mozilla Rhino engine)
• https://scripting.dev.java.net/
• Extensão para suporte de outras linguagens
• JavaFX Script
• Novas classes de Coleções
• JDBC 4.0
• Projeto OpenJDK
Lançamentos Recentes: Java EE
(2007-2008)
• JavaEE 5.0
• EJB 3.0, JSP 2.0, Servlets 2.5
• JavaServer Faces 1.2
• Apache MyFaces
• JBoss RichFaces
• Sun Mojarra
• etc.
• GlassFish App Server
• MySql
• NetBeans 6.5
• Java Application Platform SDK
Lançamentos Recentes: JavaME
(2007-2008)
• SavaJe OS
• JavaFX Mobile
• Mobile Services
Architecture
• Dispositivos
móveis com a
API MSA
• JavaME SDK
3.0 (CLDC +
CDC)
• Blu-ray Disc
API, baseado no
CDC, FP, PBP e
JavaTV
Sumário
• Introdução
• Revendo o passado
• Apresentando o presente
• Avaliando a tecnologia
• O que está por vir
• Conclusões
Parâmetros de Avaliação
• Concorrência
• Linguagens e plataformas de desenvolvimento
• Comunidade
• Padronização, número de desenvolvedores, apoio e adoção pela
indústria
• Tempo de amadurecimento
• Cobertura de paradigmas
• OO, AOP, SOA, SOS
• Completude
• O que ela propôe a fazer (problemas a resolver)
• Quais são os problemas atuais que necessitam ser solucionados
• Quais são os futuros desafios
Parâmetros de Avaliação:
Concorrência
Concorrentes JavaME JavaSE JavaEE
Não Java
Iphone
Symbian
.Net CF
BREW
Flash Lite
Pocket PC
Paml OS
Delphi
VB
C, C++
Adobe Flash
MS Silverlight
.NET
Python
PHP
Ruby on Rails
GAE
Java
Android
SuperWabba GWT
Plataformas
Parâmetros de Avaliação:
Comunidade
• Padronização
• Java Community Process (JCP)
• Java Specification Request (JSRs)
• Número de desenvolvedores
• Estimativa do JavaOne: 7M de desenvolvedores
• Diversos JUGs
• Brasil +- 20 ativos (JavaMan)
• Apoio e adoção pela indústria
• Sun, Oracle, IBM, Google, Nokia, Sony-Ericsson,
Red Hat, SAP, Intel
Parâmetros de Avaliação: Critérios
em Números
• Novas aplicações construídas
• Aplicações existentes
• Desenvolvedores
• Utilizam pelo menos uma vez
• Pesquisas na Web
• Vagas de emprego disponíveis
• Preferência dos desenvolvedores
http://www.devtopics.com/most-popular-programming-languages/
Parâmetros de Avaliação
http://www.devtopics.com/most-popular-programming-languages/
Disponibilidade de engenheiros
capacitados, cursos e
vendedores terceirizados de
soluções em 2007
Consultas no
Dice.com
2006 Quantos
desenvolvedores
utilizaram a tecnologia
pelo menos uma vez
2006
Quais linguagens
estão sendo
usadas nas
empresas
2005
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
TIOBE Programming Community Index for November 2008
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Tendências de Longo Prazo 2002-2008
Lançamento
JavaSE 5.0
Parâmetros de Avaliação: Tempo de
AmadurecimentoAmadurecimento das Linguagens de
Programação
0
5
10
15
20
25
30
35
40
C
C
++
Perl
PythonVisualBasic
JavaJavaScript
PHP
R
uby
C
#
Anos
• Tempo de amadurecimento
• C (1972), 36 anos
• C++ (1983), 25 anos
• Perl (1987), 21 anos
• Python (1991), 17 anos
• Visual Basic (1991), 17 anos
• Java (1995), 13 anos
• JavaScript (1995), 13 anos
• PHP (1995), 13 anos
• Ruby (1995), 13 anos
• C# (2001), 7 anos
Parâmetros de Avaliação: Cobertura de
Paradigmas
• Paradigmas de interesse
• Object Oriented (OOP)
• Aspect Oriented (AOP)
• Service Oriented (SOA, SOS)
• Possíveis casos de sucesso
• Suporte a multi-paradigmas
• Java: imperativa, genérica e orientada a objetos
• C#: funcional, imperativa, genérica e orientada a
objetos
• Ruby, Python e Perl: funcional, imperativa e orientada a
objetos
• C++: genérica, imperativa e orientada a objetos
Parâmetros de Avaliação:
Completude
• O que ela propõe a fazer (problemas a resolver)
• Gerenciamento de memória automática
• Portabilidade: “write once, run anywhere”
• Quais são os problemas atuais que necessitam ser
solucionados
• Desempenho (Swing, JavaME)
• Simplicidade no desenvolvimento
• Segurança (aumento da conectividade)
• Quais são os futuros desafios, novos modelos
computacionais
• Computação pervasiva, convergência IP, 3G, 4G
• Computação grid, computação nas nuvens, virtualização, P2P
• Interoperabilidade entre tecnologias
• Rich Internet Applications
Sumário
• Introdução
• Revendo o passado
• Apresentando o presente
• Avaliando a tecnologia
• O que está por vir
• Conclusões e discussões
O Que Está por Vir: JavaSE 7.0
• JSR 277 Java Module
System
• JSR 294 Improved
Modularity Support
• JSR 295 Beans Binding
• JSR 303 Beans Validation
• JSR 296 Swing Application
Framework
• JSR 203 NIO2
• JSR 255 JMX 2.0
• JSR 262 Web Services
Connector for JMX
• JSR 260 Javadoc
Technology Update
• JSR 275 Units and
Quantities
• JSR 310 Date and Time
API
• JSR 308 Annotations on
Java Types
O Que Está por Vir: JavaSE 7.0
• Suporte a XML na linguagem
• Compreendido pelo compilador
• Sem necessidade de utilizar buffers (StringBuffer,
StringBuilder
org.w3c.dom.Document d =
<this><that><other>2</other></that></this>;
element.appendChild(
<user>
<name>Xulambs</name>
</user>
);
O Que Está por Vir: JavaSE 7.0
• Propriedades JavaBeans
public class MyClass{
private property String name;
public String getName() {
return name == null? "": name;
}
}
MyClass mc = new MyClass();
mc.name = “Joao” // calls the setter
String str = mc=>name // calls the getter
mc->name = “Maria” // calls the setter
String str = mc#name // calls the getter
Opcional
O Que Está por Vir: JavaSE 7.0
• Simplificação do uso do BigDecimal
// ATUALMENTE
BigDecimal dec = new BigDecimal(“10.00”);
dec = dec.add(new BigDecimal(12.00)).
multiply(new BigDecimal(2.00));
// PROPOSTA 1: SOBRECARGA DE OPERADORES
BigDecimal dec = new BigDecimal(“10.00”);
dec = dec + new BigDecimal(12.00)) *
new BigDecimal(2.00);
// PROPOSTA 2: AUTOBOXING E USO DE LITERAIS
BigDecimal dec = 10.00n;
dec = dec + 12.00n * 2.00n;
O Que Está por Vir: JavaSE 7.0
• Switch com Strings
. . .
switch(str){
case "ok":
case "true":
return true;
case "not ok":
case "false":
return false;
default:
throw new IllegalArgumentException(str);
}
. . .
O Que Está por Vir: JavaSE 7.0
• Simular métodos de interface inexistentes
// ATUAL
import java.util.Collections;
List<String> list = new ArrayList<String>();
Collections.sort(list);
// JAVASE 7.0
import static java.util.Collections.sort;
List<String> list = new ArrayList<String>();
list.sort();
O Que Está por Vir: JavaSE 7.0
• Try/Catch melhorado
try{
return new MyClass();
} catch(InstantiationException |
IllegalAccessException e)
{
throw new AssertionError(e);
}
try{
return new MyClass();
} catch(InstantiationException e){
throw new AssertionError(e);
} catch(IllegalAccessException e){
throw new AssertionError(e);
}
JavaSE 6.0
JavaSE 7.0
O Que Está por Vir: JavaSE 7.0
• Construtor simplificado para Generics
//JavaSE 6.0
Map<String, List<String>> anagrams =
new HashMap<String, List<String>>();
//Java SE 7.0
Map<String, List<String>> anagrams = new HashMap();
// Notação Tabular para listas e mapas
List<String> itens = new ArrayList();
itens.add[1] = "something";
O Que Está por Vir: JavaSE 7.0
• Closures
• Operações sobre um bloco arbitrário de código
Java (conjunto de operações, uma expressão ou
combinação de ambos)
• A avaliação de uma closure produz um objeto
closure, que pode ser invocado, com o resultado
retornado pela execução da expressão
• Pode conter parâmetros
• Risco: pouco provável de ser incorporado à
versão 7.0 devido a algumas divergências entre
especialistas
O Que Está por Vir: JavaSE 7.0
• Closures - Exemplos
double log = { double x => Math.log(x) }.invoke(10);
int half = {
int x =>
if (x % 2 != 0) System.out.printf("%d is odd%n", x); x / 2
}.invoke(31);
int answer = { => 42 }.invoke();
int sum = { int x, int y => x + y }.invoke(3, 4);
{ int n =>
int m = n + 1; System.out.println(m * m);
}.invoke(3);
O Que Está por Vir: JavaSE 7.0
• Superpackages: super pacotes (JSR 294)
• Grupos de pacotes e controle de visibilidade externa
• Super JARs, Java Module System (JSR 277)
• Novo formato, controle de versão, distribuição,
inclusão de outros JARs
• New IO API (JSR 203)
• Permissões, atributos de arquivos, canais de
soquetes
• Unidades e Quantidades (JSR 275)
• Nova Date and Time API (JSR 310)
• Novos recursos de programação paralela,
divisão e conquista, Fork/Join (JSR 166)
• Suporte a XQuery (JSR 225)
O Que Está por Vir: JavaSE 7.0
• Gerenciamento de consumo de recursos (JSR
284)
• Tamanho da heap, tempo de CPU, conexões JDBC, etc.
• Novas anotações (JSR 308)
• @NonNull, @Existing, @ReadOnly, @Critical,
@NonEmpty
• Javadoc update (JSR 260)
• Swing Application Framework (JSR 296)
• Beans Validation (JSR 303) e Beans Binding (JSR
295)
O Que Está por Vir: JavaSE com
Suporte a Outras Linguagens
• Objetivo: adaptar a JVM para a adição de suporte
a outras linguagens de programação
• Escrita de compiladores e interpretadores na
linguagem Java para outras linguagens
• Linguagens candidatas
• Ruby (JRuby), Python (JPython), Groovy, Scala
• JavaScript (JavaSE 6.0 já possui suporte)
• BeanShell (JSR 274), JavaFX Script
• +- 200 linguagens já foram trazidas para a JVM
• Projetos: Da Vinci Machine Project
• http://openjdk.java.net/projects/mlvm/
O Que Está por Vir
• JavaME
• MIDP 3.0
• Concorrência
• IPhone, Android,
Symbian, Windows
Mobile (.Net CF)
• Telefones móveis vs.
Smartphones
• Java TV
• MSA 2
• Low, Mid, High segments
• JavaEE
• JavaEE 6.0 (JSR 316)
• EJB 3.1, JPA 2.0, JSP,
JSF 2.0, Servlets 3.0
• Concorrência
• .NET, Python, PHP,
Ruby on Rails
• Novos Paradigmas
• Service Oriented
Architecture, Service
Oriented Software
• Desenvolvimento Web
para o futuro, RIA
E o Futuro da Sun?
• Estado atual
• As ações cairam mais de 70% este ano e 90% nos ultimos
3 anos
• Esperada demissão de + - 18% da força de trabalho
• Fatos importantes
• A tecnologia Java é open-source (projeto OpenJDK), de
domínio público
• A comunidade é muito grande
• Além da Sun, várias outras empresas estão por traz da
tecnologia Java (IBM, Red Hat, Nokia, Google), conforme
proposto no JCP
• A concorrência é um fator positivo
Sumário
• Introdução
• Revendo o passado
• Apresentando o presente
• Avaliando a tecnologia
• O que está por vir
• Conclusões
Conclusões
• Referências a serem observadas
• Java Community Process, JavaOne, WebLogs de
líderes de projeto e arquitetos da Sun
• Tendências em geral
• JavaEE: Novas tecnologias, RIA, SOA
• JavaME: Foco da Sun e do JCP em telefones
móveis e dispositivos menores ao invés de
smartphones
• JavaSE: Suporte a várias linguagens,
programação multicore
Conclusões
• Linguagens de programação
• Interesse por linguagens de múltiplos paradigmas
• Prevendo o futuro
• Analise dinâmica do passado e presente
• O Java conseguiu se adaptar em novas áreas
• Futuro do Java
• Dependerá não só da Sun, mas também de outras
corporações
• Dependerá também dos concorrentes
• Custos de desenvolvimento e manutenção de soluções
• Simplicidade e velocidade no desenvolvimento
• Movimentos open source estão se consolidando cada vez
mais na comunidade Java
• OpenJDK, GlassFish, phoneME
Discussão e Dúvidas
Obrigado!
Waldir Ribeiro Pires Jr
Email: wpjr2@yahoo.com
Eteg TI: http://www.eteg.com.br
Referências
• http://anupamvarghese.blogspot.com/2007_09_
• http://www.codepedia.com/1/J2ME
• http://www.java.com/en/javahistory/timeline.jsp
• http://www.wirelessdevnet.com/columns/oct200
• http://java.sun.com/features/2000/06/time-line.h
Referências
• Groovy Homepage
• http://groovy.codehaus.org/
• Da Vinci Machine Project
• http://openjdk.java.net/projects/mlvm/
• BeanShell
• http://www.beanshell.org/
• VM Languages
• http://www.is-research.de/info/vmlanguages/

Mais conteúdo relacionado

Mais procurados

Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceGlobalcode
 
Todos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIOTodos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIOFernando Rizzato
 
Programa Acadêmico Embarcadero Gratuíto
Programa Acadêmico Embarcadero GratuítoPrograma Acadêmico Embarcadero Gratuíto
Programa Acadêmico Embarcadero GratuítoFernando Rizzato
 
Construindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutosConstruindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutosRafael Chaves
 

Mais procurados (6)

Educação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NETEducação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NET
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open Source
 
Todos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIOTodos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIO
 
Programa Acadêmico Embarcadero Gratuíto
Programa Acadêmico Embarcadero GratuítoPrograma Acadêmico Embarcadero Gratuíto
Programa Acadêmico Embarcadero Gratuíto
 
Construindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutosConstruindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutos
 
JBoss Fuse Workshop Desenvolvimento - Parte 1
JBoss Fuse Workshop Desenvolvimento - Parte 1JBoss Fuse Workshop Desenvolvimento - Parte 1
JBoss Fuse Workshop Desenvolvimento - Parte 1
 

Semelhante a Java v1.1

Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Facescejug
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesRodrigo Cândido da Silva
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenLeandro Costa
 
Java one
Java oneJava one
Java oneIsmael
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXjesuinoPower
 
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App for ...
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App for ...Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App for ...
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App for ...Renato Groff
 
Bibliotecas de interface rica no jsf 2
Bibliotecas de interface rica no jsf 2Bibliotecas de interface rica no jsf 2
Bibliotecas de interface rica no jsf 2Pablo Nóbrega
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosFelipe Gadelha Ruoso
 
GWT - de iniciante a especialista
GWT - de iniciante a especialistaGWT - de iniciante a especialista
GWT - de iniciante a especialistaDanilo Reinert
 
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEGlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEBruno Borges
 
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAYelken Heckman Ferreira Gonzales
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Valmir Justo
 
Academia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeAcademia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeGlobalcode
 
Netbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesNetbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesRodrigo Peleias
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureFabrício Lopes Sanchez
 

Semelhante a Java v1.1 (20)

MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)
 
Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Faces
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e maven
 
Java one
Java oneJava one
Java one
 
Java virtual machine quantas linguas fala a jvm2
Java virtual machine   quantas linguas fala a jvm2Java virtual machine   quantas linguas fala a jvm2
Java virtual machine quantas linguas fala a jvm2
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFX
 
JavaFX Mobile
JavaFX MobileJavaFX Mobile
JavaFX Mobile
 
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App for ...
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App for ...Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App for ...
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App for ...
 
Bibliotecas de interface rica no jsf 2
Bibliotecas de interface rica no jsf 2Bibliotecas de interface rica no jsf 2
Bibliotecas de interface rica no jsf 2
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhos
 
Javafx
JavafxJavafx
Javafx
 
GWT - de iniciante a especialista
GWT - de iniciante a especialistaGWT - de iniciante a especialista
GWT - de iniciante a especialista
 
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEGlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EE
 
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
Academia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeAcademia do Arquiteto Globalcode
Academia do Arquiteto Globalcode
 
Netbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesNetbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 Portugues
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
 

Mais de Waldir R. Pires Jr

Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Waldir R. Pires Jr
 
Proposta de projeto de pesquisa UFOP
Proposta de projeto de pesquisa UFOPProposta de projeto de pesquisa UFOP
Proposta de projeto de pesquisa UFOPWaldir R. Pires Jr
 
Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Waldir R. Pires Jr
 
Droid Emergency Context Service - Msc.
Droid Emergency Context Service - Msc.Droid Emergency Context Service - Msc.
Droid Emergency Context Service - Msc.Waldir R. Pires Jr
 
Droid Guide Prototype - Dresden - Germany
Droid Guide Prototype - Dresden - GermanyDroid Guide Prototype - Dresden - Germany
Droid Guide Prototype - Dresden - GermanyWaldir R. Pires Jr
 
IMS IP multimedia subsystem presentation
IMS IP multimedia subsystem presentationIMS IP multimedia subsystem presentation
IMS IP multimedia subsystem presentationWaldir R. Pires Jr
 
Desenvolvimento de Aplicações Móveis em Java - Parte 1
Desenvolvimento de Aplicações Móveis em Java - Parte 1Desenvolvimento de Aplicações Móveis em Java - Parte 1
Desenvolvimento de Aplicações Móveis em Java - Parte 1Waldir R. Pires Jr
 
Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaWaldir R. Pires Jr
 
Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaWaldir R. Pires Jr
 
Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaWaldir R. Pires Jr
 
Struts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogStruts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogWaldir R. Pires Jr
 
Desenvolvimento de Aplicações Móveis com JavaME
Desenvolvimento de Aplicações Móveis com JavaMEDesenvolvimento de Aplicações Móveis com JavaME
Desenvolvimento de Aplicações Móveis com JavaMEWaldir R. Pires Jr
 

Mais de Waldir R. Pires Jr (15)

Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014
 
Proposta de projeto de pesquisa UFOP
Proposta de projeto de pesquisa UFOPProposta de projeto de pesquisa UFOP
Proposta de projeto de pesquisa UFOP
 
Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014
 
Droid Emergency Context Service - Msc.
Droid Emergency Context Service - Msc.Droid Emergency Context Service - Msc.
Droid Emergency Context Service - Msc.
 
Droid Guide Prototype - Dresden - Germany
Droid Guide Prototype - Dresden - GermanyDroid Guide Prototype - Dresden - Germany
Droid Guide Prototype - Dresden - Germany
 
IMS IP multimedia subsystem presentation
IMS IP multimedia subsystem presentationIMS IP multimedia subsystem presentation
IMS IP multimedia subsystem presentation
 
AED Lab 01 Sab
AED Lab 01 SabAED Lab 01 Sab
AED Lab 01 Sab
 
Desenvolvimento de Aplicações Móveis em Java - Parte 1
Desenvolvimento de Aplicações Móveis em Java - Parte 1Desenvolvimento de Aplicações Móveis em Java - Parte 1
Desenvolvimento de Aplicações Móveis em Java - Parte 1
 
Android Developers Challenge
Android Developers ChallengeAndroid Developers Challenge
Android Developers Challenge
 
Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em Java
 
Computação Ubíqua
Computação UbíquaComputação Ubíqua
Computação Ubíqua
 
Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em Java
 
Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em Java
 
Struts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogStruts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E Log
 
Desenvolvimento de Aplicações Móveis com JavaME
Desenvolvimento de Aplicações Móveis com JavaMEDesenvolvimento de Aplicações Móveis com JavaME
Desenvolvimento de Aplicações Móveis com JavaME
 

Java v1.1

  • 1. Java: O que está por vir? Waldir Ribeiro Pires Jr wpjr2@yahoo.com Consultor, Eteg TI
  • 2. Sumário • Introdução • Revendo o passado • Apresentando o presente • Avaliando a tecnologia • O que está por vir • Conclusões
  • 3. Sumário • Introdução • Revendo o passado • Apresentando o presente • Avaliando a tecnologia • O que está por vir • Conclusões
  • 5. Introdução Objetivos Visão O estado da arte da tecnologia As tecnologias que estão por vir As tendências do mercado Concorrência Avaliação Paradigmas de programação O amadurecimento da tecnologia Comunidades Avaliando o passado O resumo das principais tecnologias atuais Uma previsão do que está por vir Avaliação de mercado das principais linguagens de programação
  • 6. Sumário • Introdução • Revendo o passado • Apresentando o presente • Avaliando a tecnologia • O que está por vir • Conclusões
  • 7. Revendo o Passado (1995 a 2008) 1995 20082000 20041998 2002 2006 JavaCard 1.0 Lançamento da plataforma J2ME JavaCard 2.1 Divisão nas Plataformas J2SE J2ME J2EE JavaTV API Lançamento do primeiro celular com J2ME Motorola i3000 WTK 1.0 Mobile Media API MIDP 2.0 JTWI WTK 2.1 WMA 2.0 AMS i18n WTK 2.3 MSA CDC Toolkit Plataforma Sun SPOT OS WTK 2.5 WTK 3.0 BluRay API Java Servlets DK 1.0 EJB 1.0 Java Web Server 1.0 Servlets 2.0 Java Server Pages 1.0 Plataforma J2EE Java APIs For XML Servlets 2.3 EJB 2.0 JSP 1.2 Plataforma J2EE 1.3 JSTL JDBC 3.0 JTA Servlets 2.4 JCA 1.5 Plataforma J2EE 1.4 JSP 2.0 EJB 2.1 JMS Plataforma JavaEE 5.0 Servlets 2.5 JSP 2.1 JSF 1.2 EJB 3.0 JDBC 4.0 Hibernate Spring Struts 2009 JDK 1.0 JDK 1.2 J2SE JFC Swing JCP Formalizado Java Hotspot Lançamento do JDK 1.3 J2SE 1.3 J2SE para Linux Lançamento do JDK 1.4 J2SE 1.4 Lançamento do JDK 5.0 JSE 5.0 Java Compiler API Plataforma JavaSE 6.0 JavaFX OpenJDK
  • 8. Sumário • Introdução • Revendo o passado • Apresentando o presente • Avaliando a tecnologia • O que está por vir • Conclusões
  • 9. Apresentando o Presente • Quais seriam alguns dos principais elementos no contexto global que poderíamos utilizar como um “termômetro” da tecnologia Java ? • Possíveis respostas • Conferências JavaOne • Java Community Process e Java Specification Requests • Número de projetos realizados • Oportunidades de emprego • Artigos e periódicos em revistas
  • 10. Resumo JavaOne 2008: JavaSE • Estatísticas • 7M de desenvolvedores, 750K downloads/mês do JDK, 48 M downloads do JRE • Apresentações de demos utilizando JavaFX Script em Applets tanto em navegadores quando no desktop • JVM com suporte a outras linguagens • Glassfish (Ruby, Groovy, Rails e Grails) • Lançamento do JavaSE 7.0 prevista para meiados de 2009 • Suporte a diversas linguagens de scripts • Programação multicore
  • 11. Resumo JavaOne 2008: JavaEE • Foco na simplicidade • Mais anotações, menos descritores de desdobramento • Proposta de perfis (“rightsizing”) • Pacotes de APIs com objetivos específicos • Pontos de extensão, aumentando a flexibilidade com outros arcabouços e bibliotecas • Tecnologias de destaque • Ruby, AJAX, JavaFX, Grails, GWT • RIA, Adobe Flex e Java
  • 14. Java Community Process e Java Specification Request API JSR Estado SAF 296 EGF Beans Binding 295 EGF Beans Validation 303 EDR Java Module System 277 EDR NIO 203 EDR Javadoc Update 260 EGF Units 275 EDR Date and Time API 310 EGF Anotations 308 EDR WS-JMX 262 PR JMX 2.0 250 EDR Modularity 294 EDR JavaSE API JSR Estado MIDP 3.0 271 PR MBS API 272 FAB Service Connection 279 PR IMS Services 281 FR SVG 2.0 287 PFD Location API 2.0 293 FR Mobile 3D 2.0 297 PR Network Mobility 307 EDR JavaME API JSR Estado JavaEE 6.0 316 EDR JSF 2.0 314 EDR2 EJB 3.1 318 PR JPA 2.0 317 PR Servlets 3.0 315 EDR JCA 1.6 322 EDR JavaEE EGF Expert Group Formation EDR Early Draft Review PR Public Review PFD Proposed Final Draft FAB Final Approval Ballot FR Final Release Legenda Bom Ritmo Lento, mas progredindo Muito lento
  • 15. Lançamentos Recentes: JavaSE (2007-2008) • JavaSE 6.0 SDK • Pacote javax.script com suporte a extensão para outras linguagens script (JSR 223) • Jrunscript, baseado em JavaScript, (Mozilla Rhino engine) • https://scripting.dev.java.net/ • Extensão para suporte de outras linguagens • JavaFX Script • Novas classes de Coleções • JDBC 4.0 • Projeto OpenJDK
  • 16. Lançamentos Recentes: Java EE (2007-2008) • JavaEE 5.0 • EJB 3.0, JSP 2.0, Servlets 2.5 • JavaServer Faces 1.2 • Apache MyFaces • JBoss RichFaces • Sun Mojarra • etc. • GlassFish App Server • MySql • NetBeans 6.5 • Java Application Platform SDK
  • 17. Lançamentos Recentes: JavaME (2007-2008) • SavaJe OS • JavaFX Mobile • Mobile Services Architecture • Dispositivos móveis com a API MSA • JavaME SDK 3.0 (CLDC + CDC) • Blu-ray Disc API, baseado no CDC, FP, PBP e JavaTV
  • 18. Sumário • Introdução • Revendo o passado • Apresentando o presente • Avaliando a tecnologia • O que está por vir • Conclusões
  • 19. Parâmetros de Avaliação • Concorrência • Linguagens e plataformas de desenvolvimento • Comunidade • Padronização, número de desenvolvedores, apoio e adoção pela indústria • Tempo de amadurecimento • Cobertura de paradigmas • OO, AOP, SOA, SOS • Completude • O que ela propôe a fazer (problemas a resolver) • Quais são os problemas atuais que necessitam ser solucionados • Quais são os futuros desafios
  • 20. Parâmetros de Avaliação: Concorrência Concorrentes JavaME JavaSE JavaEE Não Java Iphone Symbian .Net CF BREW Flash Lite Pocket PC Paml OS Delphi VB C, C++ Adobe Flash MS Silverlight .NET Python PHP Ruby on Rails GAE Java Android SuperWabba GWT Plataformas
  • 21. Parâmetros de Avaliação: Comunidade • Padronização • Java Community Process (JCP) • Java Specification Request (JSRs) • Número de desenvolvedores • Estimativa do JavaOne: 7M de desenvolvedores • Diversos JUGs • Brasil +- 20 ativos (JavaMan) • Apoio e adoção pela indústria • Sun, Oracle, IBM, Google, Nokia, Sony-Ericsson, Red Hat, SAP, Intel
  • 22. Parâmetros de Avaliação: Critérios em Números • Novas aplicações construídas • Aplicações existentes • Desenvolvedores • Utilizam pelo menos uma vez • Pesquisas na Web • Vagas de emprego disponíveis • Preferência dos desenvolvedores http://www.devtopics.com/most-popular-programming-languages/
  • 23. Parâmetros de Avaliação http://www.devtopics.com/most-popular-programming-languages/ Disponibilidade de engenheiros capacitados, cursos e vendedores terceirizados de soluções em 2007 Consultas no Dice.com 2006 Quantos desenvolvedores utilizaram a tecnologia pelo menos uma vez 2006 Quais linguagens estão sendo usadas nas empresas 2005
  • 26. Parâmetros de Avaliação: Tempo de AmadurecimentoAmadurecimento das Linguagens de Programação 0 5 10 15 20 25 30 35 40 C C ++ Perl PythonVisualBasic JavaJavaScript PHP R uby C # Anos • Tempo de amadurecimento • C (1972), 36 anos • C++ (1983), 25 anos • Perl (1987), 21 anos • Python (1991), 17 anos • Visual Basic (1991), 17 anos • Java (1995), 13 anos • JavaScript (1995), 13 anos • PHP (1995), 13 anos • Ruby (1995), 13 anos • C# (2001), 7 anos
  • 27. Parâmetros de Avaliação: Cobertura de Paradigmas • Paradigmas de interesse • Object Oriented (OOP) • Aspect Oriented (AOP) • Service Oriented (SOA, SOS) • Possíveis casos de sucesso • Suporte a multi-paradigmas • Java: imperativa, genérica e orientada a objetos • C#: funcional, imperativa, genérica e orientada a objetos • Ruby, Python e Perl: funcional, imperativa e orientada a objetos • C++: genérica, imperativa e orientada a objetos
  • 28. Parâmetros de Avaliação: Completude • O que ela propõe a fazer (problemas a resolver) • Gerenciamento de memória automática • Portabilidade: “write once, run anywhere” • Quais são os problemas atuais que necessitam ser solucionados • Desempenho (Swing, JavaME) • Simplicidade no desenvolvimento • Segurança (aumento da conectividade) • Quais são os futuros desafios, novos modelos computacionais • Computação pervasiva, convergência IP, 3G, 4G • Computação grid, computação nas nuvens, virtualização, P2P • Interoperabilidade entre tecnologias • Rich Internet Applications
  • 29. Sumário • Introdução • Revendo o passado • Apresentando o presente • Avaliando a tecnologia • O que está por vir • Conclusões e discussões
  • 30. O Que Está por Vir: JavaSE 7.0 • JSR 277 Java Module System • JSR 294 Improved Modularity Support • JSR 295 Beans Binding • JSR 303 Beans Validation • JSR 296 Swing Application Framework • JSR 203 NIO2 • JSR 255 JMX 2.0 • JSR 262 Web Services Connector for JMX • JSR 260 Javadoc Technology Update • JSR 275 Units and Quantities • JSR 310 Date and Time API • JSR 308 Annotations on Java Types
  • 31. O Que Está por Vir: JavaSE 7.0 • Suporte a XML na linguagem • Compreendido pelo compilador • Sem necessidade de utilizar buffers (StringBuffer, StringBuilder org.w3c.dom.Document d = <this><that><other>2</other></that></this>; element.appendChild( <user> <name>Xulambs</name> </user> );
  • 32. O Que Está por Vir: JavaSE 7.0 • Propriedades JavaBeans public class MyClass{ private property String name; public String getName() { return name == null? "": name; } } MyClass mc = new MyClass(); mc.name = “Joao” // calls the setter String str = mc=>name // calls the getter mc->name = “Maria” // calls the setter String str = mc#name // calls the getter Opcional
  • 33. O Que Está por Vir: JavaSE 7.0 • Simplificação do uso do BigDecimal // ATUALMENTE BigDecimal dec = new BigDecimal(“10.00”); dec = dec.add(new BigDecimal(12.00)). multiply(new BigDecimal(2.00)); // PROPOSTA 1: SOBRECARGA DE OPERADORES BigDecimal dec = new BigDecimal(“10.00”); dec = dec + new BigDecimal(12.00)) * new BigDecimal(2.00); // PROPOSTA 2: AUTOBOXING E USO DE LITERAIS BigDecimal dec = 10.00n; dec = dec + 12.00n * 2.00n;
  • 34. O Que Está por Vir: JavaSE 7.0 • Switch com Strings . . . switch(str){ case "ok": case "true": return true; case "not ok": case "false": return false; default: throw new IllegalArgumentException(str); } . . .
  • 35. O Que Está por Vir: JavaSE 7.0 • Simular métodos de interface inexistentes // ATUAL import java.util.Collections; List<String> list = new ArrayList<String>(); Collections.sort(list); // JAVASE 7.0 import static java.util.Collections.sort; List<String> list = new ArrayList<String>(); list.sort();
  • 36. O Que Está por Vir: JavaSE 7.0 • Try/Catch melhorado try{ return new MyClass(); } catch(InstantiationException | IllegalAccessException e) { throw new AssertionError(e); } try{ return new MyClass(); } catch(InstantiationException e){ throw new AssertionError(e); } catch(IllegalAccessException e){ throw new AssertionError(e); } JavaSE 6.0 JavaSE 7.0
  • 37. O Que Está por Vir: JavaSE 7.0 • Construtor simplificado para Generics //JavaSE 6.0 Map<String, List<String>> anagrams = new HashMap<String, List<String>>(); //Java SE 7.0 Map<String, List<String>> anagrams = new HashMap(); // Notação Tabular para listas e mapas List<String> itens = new ArrayList(); itens.add[1] = "something";
  • 38. O Que Está por Vir: JavaSE 7.0 • Closures • Operações sobre um bloco arbitrário de código Java (conjunto de operações, uma expressão ou combinação de ambos) • A avaliação de uma closure produz um objeto closure, que pode ser invocado, com o resultado retornado pela execução da expressão • Pode conter parâmetros • Risco: pouco provável de ser incorporado à versão 7.0 devido a algumas divergências entre especialistas
  • 39. O Que Está por Vir: JavaSE 7.0 • Closures - Exemplos double log = { double x => Math.log(x) }.invoke(10); int half = { int x => if (x % 2 != 0) System.out.printf("%d is odd%n", x); x / 2 }.invoke(31); int answer = { => 42 }.invoke(); int sum = { int x, int y => x + y }.invoke(3, 4); { int n => int m = n + 1; System.out.println(m * m); }.invoke(3);
  • 40. O Que Está por Vir: JavaSE 7.0 • Superpackages: super pacotes (JSR 294) • Grupos de pacotes e controle de visibilidade externa • Super JARs, Java Module System (JSR 277) • Novo formato, controle de versão, distribuição, inclusão de outros JARs • New IO API (JSR 203) • Permissões, atributos de arquivos, canais de soquetes • Unidades e Quantidades (JSR 275) • Nova Date and Time API (JSR 310) • Novos recursos de programação paralela, divisão e conquista, Fork/Join (JSR 166) • Suporte a XQuery (JSR 225)
  • 41. O Que Está por Vir: JavaSE 7.0 • Gerenciamento de consumo de recursos (JSR 284) • Tamanho da heap, tempo de CPU, conexões JDBC, etc. • Novas anotações (JSR 308) • @NonNull, @Existing, @ReadOnly, @Critical, @NonEmpty • Javadoc update (JSR 260) • Swing Application Framework (JSR 296) • Beans Validation (JSR 303) e Beans Binding (JSR 295)
  • 42. O Que Está por Vir: JavaSE com Suporte a Outras Linguagens • Objetivo: adaptar a JVM para a adição de suporte a outras linguagens de programação • Escrita de compiladores e interpretadores na linguagem Java para outras linguagens • Linguagens candidatas • Ruby (JRuby), Python (JPython), Groovy, Scala • JavaScript (JavaSE 6.0 já possui suporte) • BeanShell (JSR 274), JavaFX Script • +- 200 linguagens já foram trazidas para a JVM • Projetos: Da Vinci Machine Project • http://openjdk.java.net/projects/mlvm/
  • 43. O Que Está por Vir • JavaME • MIDP 3.0 • Concorrência • IPhone, Android, Symbian, Windows Mobile (.Net CF) • Telefones móveis vs. Smartphones • Java TV • MSA 2 • Low, Mid, High segments • JavaEE • JavaEE 6.0 (JSR 316) • EJB 3.1, JPA 2.0, JSP, JSF 2.0, Servlets 3.0 • Concorrência • .NET, Python, PHP, Ruby on Rails • Novos Paradigmas • Service Oriented Architecture, Service Oriented Software • Desenvolvimento Web para o futuro, RIA
  • 44. E o Futuro da Sun? • Estado atual • As ações cairam mais de 70% este ano e 90% nos ultimos 3 anos • Esperada demissão de + - 18% da força de trabalho • Fatos importantes • A tecnologia Java é open-source (projeto OpenJDK), de domínio público • A comunidade é muito grande • Além da Sun, várias outras empresas estão por traz da tecnologia Java (IBM, Red Hat, Nokia, Google), conforme proposto no JCP • A concorrência é um fator positivo
  • 45. Sumário • Introdução • Revendo o passado • Apresentando o presente • Avaliando a tecnologia • O que está por vir • Conclusões
  • 46. Conclusões • Referências a serem observadas • Java Community Process, JavaOne, WebLogs de líderes de projeto e arquitetos da Sun • Tendências em geral • JavaEE: Novas tecnologias, RIA, SOA • JavaME: Foco da Sun e do JCP em telefones móveis e dispositivos menores ao invés de smartphones • JavaSE: Suporte a várias linguagens, programação multicore
  • 47. Conclusões • Linguagens de programação • Interesse por linguagens de múltiplos paradigmas • Prevendo o futuro • Analise dinâmica do passado e presente • O Java conseguiu se adaptar em novas áreas • Futuro do Java • Dependerá não só da Sun, mas também de outras corporações • Dependerá também dos concorrentes • Custos de desenvolvimento e manutenção de soluções • Simplicidade e velocidade no desenvolvimento • Movimentos open source estão se consolidando cada vez mais na comunidade Java • OpenJDK, GlassFish, phoneME
  • 48. Discussão e Dúvidas Obrigado! Waldir Ribeiro Pires Jr Email: wpjr2@yahoo.com Eteg TI: http://www.eteg.com.br
  • 49. Referências • http://anupamvarghese.blogspot.com/2007_09_ • http://www.codepedia.com/1/J2ME • http://www.java.com/en/javahistory/timeline.jsp • http://www.wirelessdevnet.com/columns/oct200 • http://java.sun.com/features/2000/06/time-line.h
  • 50. Referências • Groovy Homepage • http://groovy.codehaus.org/ • Da Vinci Machine Project • http://openjdk.java.net/projects/mlvm/ • BeanShell • http://www.beanshell.org/ • VM Languages • http://www.is-research.de/info/vmlanguages/