Cá estou no JavaOne em São Francisco e de volta à escrita. Depois de uma viagem extenuante de cerca de 16 horas e um fuso horário com menos 8 horas, cheguei ontem à noite para o JUG Leaders dinner. Tive a oportunidade conhecer muitos líderes de outros países, especialmente muitos irmãos brasileiros que deram uma ajuda aqui ao caloiro destas coisas de networking.
General Session
Hoje de manhã começou a conferência com a General Session, bem cedo e com muitas filas para entrar. A frase de marca deste ano é “Java + You” e que serve para defenderem a idea da tecnologia Java estar integrada em tudo o que usamos. Esta é aliás a linha de marketing que tem sido usada pela Sun e foi isso que esta primeira sessão foi, previsivelmente: Marketing. O ponto mais focado foi JavaFX e as suas capacidades. Embora o lei de Murphy tenha feito com as demos não funcionassem muito bem, foi uma mensagem que a Sun quer e precisa de concorrer tanto com a Adobe como com a Microsoft no Flash e Silverlight respectivamente. Tentaram demonstrar que o que fazem com JavaFX não é possível com qualquer outra tecnologia o
que não é obviamente verdade. O mais interessante de toda a apresentação foi a capacidade de arrastarem uma applet de uma página web
para o desktop, fechar o browser e continuar a usar a aplicação. Quando se tentar fechar a aplicação, somos interrogados se queremos deixá-la instalada na nossa máquina. Útil, definitivamente. A sessão terminou com a presença de Neil Young no palco a vender a ideia do uso de JavaFX com Blueray para criar conteúdos ricos. Além de uma personagem com o seu quê de ébrio às 8 da manhã, foi mais um pouco de marketing.
Fortress
A minha primeira sessão técnica foi sobre Fortress, apresentada pela Christine Flood. A apresentadora parece-me que despachou rápido a apresentação mas o conteúdo valeu a pena para alguém como eu que pouco ou nada sabia sobre a linguagem. A palestra foi feita em contagem decrescente com as 10 melhores features da linguagem. Gostava de colocar aqui os 10 pontos que referi mas não tenho os slides. Mal tenha edito o post, mas posso dizer que tem coisas como contratos, memória transacional, paralelismo implicito, notação matemática e outras coisas interessantes. A linguagem Fortress é muito interessante para desenvolvimento de aplicações científicas, por exemplo para HPC, mas também para ambientes em que contratos, conformidade e performance são importantes – indústria aeroespacial, biotech, etc. De seguida devia ter ido a uma sessão intitulada “SOA and 35 Million Transactions per Day: Mission Impossible?” mas acabei por ficar a falar um pouco sobre o JEDI com o Daniel de Oliveira do DFJUG e fui à conferência para bloggers do Jonathan Schwarz e o Rick Green. Um ambiente bastante próximo mas com respostas rígidas e um pouco evasivas por parte do pessoal da Sun – por exemplo, não quiseram responder a perguntas sobre despedimentos anunciados pela Sun na semana passada.
Spring 2.5, pelo mestre
Depois do almoço e da balda a outra General Session – que vou continuar a não ir, é mais marketing e o descanço / carregamento de baterias é mais importante – foi a vez da apresentação do Rod Johnson sobre o Spring 2.5. Foi uma apresentação adequada tanto a utilizadores que já utilizaram versões anteriores do Spring como utilizadores totalmente novos ao ecossistema Spring. Foi possível saber algo sobre o caminho a seguir em diversos aspectos – suporte para java 1.3 já não está disponível na versão 2.5 e na versão 3.0 só será suportado java 5+. Esta nova versão tira também partido da possibilidade de fazer deploy de ficheiros RAR, que evita que se tenha de criar um EAR ou um WAR específicamente para fazer deploy de Spring quando não é realmente necessário. Foi igualmente anunciado que esta versão de Spring é oficialmente compatível com as versões 6.X do Websphere. Falou-se igualmente sobre OSGi – aliás, fala-se muito sobre OSGi em todo o lado este ano no JavaOne – e sobre como Spring suporta o standard. Todos os JARs Spring são OSGi packets e podemos escolher se queremos Spring a funcionar sobre J2EE ou sobre OSGi. Bastante interessante a apresentação, pedagógica com alguma regras que podem ser úteis para o futuro, nomeadamente sobre quando usar annotations ou XML para configuração Spring.
Defective Java™ Code: Turning WTF Code into a Learning Experience
Esta sessão foi bastante interessante e um pouco ao estilo dos Java Puzzlers. Foi apresentada pelo Bill Pugh, criador do FindBugs, e focou-se em diversos tipos de bugs, nomeadamente problemas de sincronismo (locks, race conditions) e, curiosamente, falou-se bastante sobre implementações de métodos equals. Na realidade, é bastante simples criar métodos equals que não são facilmente extensíveis e que podem não garantir a simetria necessária. Acima de tudo esta sessão deixou-me o mindset de tentar encontrar padrões de erros a partir dos bugs que vou encontrando ou cometendo. E foi a sessão com o melhor título de todos, sem dúvida.
Let’s Resync: What’s New for Concurrency on the Java™ Platform, Standard
Um dos meus focos de interesse actuais, como se pode ver pelas sessões que tenho escolhido, é o paralelismo, performance e escalabilidade. Esta apresentação falou principalmente da framework fork-join que estará disponível no JDK7. O que esta framework, ao invés de aproximações anteriores como usar threads directamente e join(), ou usar Executors e Futures como no java.util.concurrent, permite dividir trabalho de forma simples e ter uma framework que sabe distribuir esse trabalho por um conjunto de threads e, por sua vez, distribuir esse trabalho por um conjunto de cores. A forma como as threads “agarram” o trabalho é por um processo chamado work stealing e que também é usado na linguagem Fortress. Permite que as threads que estão livres vão à lista de tarefas de outras threads retirar-lhes tarefas e executá-las. Na realidade, é criado um efeito divide-and-conquer e o custo associado com esta solução é bastante baixo. São fornecidos objectos extremamente uteis em cima da framework, nomeadamente o ParallelArray. O que este array faz é encapsular a lógica toda do fork-join e permite que o utilizador use 3 tipos de operações: filtro, mapeamento e agregação, que podem ser built-in (i.e. sum(), max(),…) ou definidas pelo utilizador. Ao fazermos uma sequencia de operações sobre um array deste tipo, temos automaticamente código paralelizado – é um pouco como o MapReduce do Google.
Real World, Not Hello World: GWT Development for Java™ Technology Shops
Decidi ir a um Birds-of-Feather sobre GWT e foi um pouco desanimador. Pouco ou nada de novo para alguém que não sabe muito da coisa, o que não é bom sinal. Foi tempo perdido.
JUG Community BOF: JUG Leaders from Around the World Interact with Sun
No fim do dia foi a sessão em que os JUG Leaders e amigos se encontraram e falaram um pouco sobre o futuro da plataforma Java. O objectivo era seleccionar 3 temas e discuti-los mais aprofundadamente mas a conversa dispersou-se e precisava-se de pelo menos mais 1 hora para se ter discutido algo realmente interessante. A notícia que acabou por sair, sem querer ou talvez intencionalmente por parte do responsável da Sun, é que a JVM irá suportar PHP brevemente, tal como suporta hoje Ruby, Python, etc. É uma excelente notícia e um óptimo move, se se provar verdade, dada a quantidade de aplicações e programadores PHP existentes. No fim, havia cerveja de graça e festas mas o Jet Lag falou mais alto e o hotel foi o destino certo. A sensação que fica
é que o JavaOne é realmente um mundo e quer-se aproveitar todos os momentos para absorver o que se passa. Talvez seja sensação de rookie mas isto é mesmo um sítio divertido para estar!
2 thoughts on “JavaOne – primeiras impressões”