Compartilho por aqui um link bem interessante, divulgado via LinkedIn pelo Rodrigo Yoshima, que contém uma lista unificada dos Coding Dojos que acontecem pelo Brasil.
Muito legal mesmo! E o melhor: você pode adicioná-la no seu leitor RSS preferido!
JDBC Best Practices has something for every developer. This DZone Refcard starts off with JDBC basics including descriptions for each of the 5 Driver Types. This is followed up with some advanced JDBC on Codeless Configuration, Single Sign-on with Kerberos, Debugging and Logging. We even threw in a SQL Quick Reference to round things off.
Como parte da comemoração do centésimo RefCard, guias rápidos de consultas ou um visão geral sobre determinada tecnologia, um artigo na DZone, responsável pelos cartões de referência, reuniu os 10 RefCards mais baixados durante o primeiro mês após o anúncio do mesmo. Confira a lista:
Achei muito interessante e estou divulgando por aqui. Participo agora de um grupo de estudos no instituto onde me graduei (IFSP) e em alguns sábados estarei dedicando algumas horas para melhorar o entendimento do Arduino. Fica abaixo a dica, retirada do site quicklycode.com.
Arduino is a tool for the design and development of embedded computer systems, consisting of a simple open hardware design for a single-board microcontroller, with embedded I/O support and a standard programming language. An Arduino is programmed using the Wiring language, which is essentially C++ with a few simplifications. The Processing programming language is often used to interface a computer with an Arduino, often to create unorthodox interfaces.
Material de referência para download, no caso de surgir aquela dúvida sobre Git, um dos sistemas de controle de versão que mais está adquirindo adeptos nos dias de hoje.
Dica retirada do excelente RefCardz. Se quiser pode fazer o download acessando o link abaixo:
Today, developers everywhere are migrating in droves to this exciting platform. Users reference its blistering performance, usage flexibility, offline capabilities, and collaboration features as their motivation for switching. Let’s get started with Git. You’ll be using it like a master in no time at all.
Estava eu a ler meus Feeds, RSS, Reader e listas de discussão pela manhã (como é de costume e hábito assaz “viciante”…rs), quando achei uma notícia bem interessante, enviada pelo usuário Rafael Torres na lista de discussão de JavaME do SOUJava, onde o assunto da thread era “Como avaliar candidatos?”.
Eis que o mesmo sugere dar uma lida no post “140 Google Interview Questions “ e fazer extração de algumas perguntas para entrevistas, por exemplo. Interessado pelo título (é claro…rs) fui dar uma olhada lá no site…
O cara que escreveu o post chama-se Lewis Lin. O mesmo já trabalhou no Google, Citibank, Accenture e hoje está na Microsoft(!). Ele transcreveu algumas questões que são feitas em entrevistas do Google para os mais diversos cargos.
O nível intelectual/profissional exigido para entrar no Google é impressionante. Só pelas perguntas você já consegue parametrizar o seu nível de conhecimento, sabendo se está muito ou pouco atualizado na sua área (ou para um cargo similar no Google). Esse é o objetivo de eu estar compartilhando esse material.
Portanto não perca tempo e dê uma lida no post do Lewis!
Ou você é capaz de me responder o que é um “dead beef” (pergunta feita para o cargo de Engenheiro de Sofware!)? Não vale procurar no Google hein…rsrs!
2. Na URL do vídeo, troque o “Y” em “YouTube” por um 3
3. Pronto!
Agora é só escolher se quer baixar em formato MP4 ou FLV. O KickYouTube também gerencia downloads de vídeo de forma simples e inteligente — basta colocar “kick” antes do “youtube” na URL do vídeo — e tem ainda mais opções. [Lifehacker]
P.S. : particularmente eu uso o KeepVid (http://www.keepvid.com), que tem o adicional de permitir salvar em qualidade hd (se o vídeo permitir isso, lógico).
Se vc um dia ja sonhou em ter um caneca oficial do java, semana passada eu comprei uma muito bacana com um preço bem acessível !! Segue o link ai. A caneca chegou a poucos dias e eu ja estou exibindo aqui na empresa kkkkkkkkk.
Participei na última semana do Sun Tech Days 2009/2010, evento que aconteceu aqui em São Paulo, contando com a presença de grandes engenheiros da Sun e de ícones da comunidade Java do Brasil, e que tive o privilégio de me inscrever por um “golpe de sorte”, pois abriram-se entre o dia 02 e 03 de dezembro 200 inscrições gratuitas do evento, e tive sorte de me inscrever com sucesso 🙂
Vou disponibilizar para vocês agora um resumo de tudo o que aconteceu de acordo com a minha ótica.
Panorama 1: Para chegar até o local…
Para chegar até o local não foi as mil maravilhas no dia 08 de Dezembro…
Presenciei uma organização/sinalização de locais/palestras/auditórios muito boa, fora a prestatividade dos envolvidos. Para pegar o crachá de conferencista não demorei muito tempo, além do espaço ser abrigador da chuva (acima de tudo…rs). De cara pude comtemplar as presenças do Marcelo Leal (SUN), Carlos Fernando Gonçalves (JavaNoroeste), Jorge Diz, Vinicius Senger e Yara Senger (Globalcode). Andando mais um pouco visualizei o mito James Gosling (!). Esperei mais 10 minutos até poder adentrar ao auditório principal. Nesse “meio tempo” fui visitar os estandes dos expositores, alguns como OpenSolaris, Oracle (é claro), Sun (é claro [2]) e Locaweb.
Após isso adentrei ao auditório principal para a primeira palestra do dia. Para saber sobre todos os palestrantes acesse esse link.
Boas Vindas ao Sun Tech Days – Luiz Fernando Maluf
Para dar as boas vindas ao pessoal do evento, o diretor para a América Latina da Sun Microsystems, Luiz Fernando Maluf, fez uma rápida apresentação mostrando o cenário no qual se encaixam os desenvolvedores Java (e usuários de tecnologias SUN) e como eles estão relacionados com o panorama do mercado, retorno profissional, técnico e financeiro, visando aproveitar as oportunidades que surgem no mercado de hoje: fim da crise, uso e expansão da plataforma Java pela linguagem Java (e outras) e abordagens acerca de novas tecnologias, como TV Digital, por exemplo. Agradeceu aos JUG leaders de comunidades, caravanas e o público do evento que estava presente.
Showcase de Tecnologia: Inspire-se! – Simon Ritter e Angela Caicedo
Antes do “pai do Java” falar sua “visão futurista” da plataforma, Simon Ritter e Angela Caicedo apresentaram alguns exemplos de aplicação das tecnologias Java e Sun do momento. As implementações e demos foram mostradas para o público.
Simon mostrou como JavaFX pode ser produtivo, gerando animações com figuras ou vídeos, para Web ou Desktop, sem escrever uma linha de código e usando apenas uma “interface amigável de arrastar, soltar, colocar botões e etc.”. No fundo é o JavaFX Platform Suite, que pode ser usado como plugin para ferramentas pagas como Adobe Photoshop, Illustrator e etc. O objetivo era mostrar a produtividade da ferramenta com o objetivo de criar aplicações RIA com pouco “trabalho” (vulgo escrita de código).
Angela Caicedo mostrou uma tecnologia que achei bem interessante: uma “lousa mágica” usando JavaFX. Se trata de uma lousa de vidro, transparente, que por trás dela havia um projetor multimídia (projetando um quadro negro, lousa) com um Wii Remote em cima captando sinais de movimento e toque feitos com uma luva (a qual ia tocando a lousa ou “escrevendo” na mesma). As respostas eram enviadas via bluetooth para um notebook que processava as coordenadas e passava para uma aplicação JavaFX. Com isso era possível relacionar na aplicação o ponto tocado e a significância disso: se era um botão ativado da aplicação que deveria abrir uma paleta de cores, se era para limpar o quadro e etc.
Esse exemplo mostrou a sinergia de algumas tecnologias, além de Java e soluções SUN, que podem gerar modelos inteligentes tão bons quanto o apresentado.
O que está acontecendo com o Java? – James Gosling
Após o showcase James Gosling subiu ao palco para o frissom dos presentes, que puderam comtemplar o “mito”. O overview de James Gosling estava relacionado com as novidades da plataforma Java: mais de um assunto foi abordado, como JavaFX, NetBeans, Glassfish, Java EE6 e etc.
Sobre o Glassfish foi mantido o discurso de ser o servidor de aplicação mais rápido, baixado e performático do mercado (lógico…rs). Foram mostrados “gráficos e informações comprovando”. O mesmo está a muito tempo na versão V2, mas a versão V3 (lançada no dia 10/12) terá suporte a Java EE 6. Gosling fez algumas demos mostrando um menor tempo de redeploy para as aplicações, quase instantâneo, evidenciando uma melhoria na capacidade de criação e manutenabilidade de projetos via Glassfish.
Uma das novidades mostradas pelo mesmo foi o lançamento da JavaStore, que no momento está disponível apenas para o público americano, mas que tem previsão de abrangência maior e sair da fase beta no ano de 2010.
Gosling e Tim Boudreau, especialista em Java Card, fizeram uma demo mostrando o novo suporte para contenção de aplicações Web, http e https, embarcados (um servidor web dentro de um chip!).
O NetBeans foi citado como IDE padrão e está na sua versão 6.8 com suporte a Java EE6 também (Gosling indica “jogar no lixo” o Emacs, Vi e Eclipse, inclusive…rs).
No final da apresentação, e de praxe para eventos da Sun, muitos brindes foram jogados para o público (Camisas da Sun e “Dukes“).
Glassfish V3: O servidor de aplicativos de última geração – Sang Shin
Sang é um velho conhecido do Brasil e de Sun Tech Days: essa foi a sua oitava viagem ao Brasil. Ao olhar para o mesmo sabia que conhecia ele de algum lugar. Voilá! Me veio a lembrança de já ter visto um vídeo no youtube dele “dançando” em uma das edições do Sun Tech Days. Confiram abaixo e tirem suas conclusões…rs.
Alguns pontos a ressaltar da apresentação
O objetivo do Glassfish V3 é ser o melhor servidor de aplicações do mercado: é compatível com Java EE 6, modularizado (baseado em OSGi e usando Apache Felix), sem limites de containeres e pode rodar containeres Java ou não-Java;
Glassfish tem suporte a mais de 200 bundles OSGi e podem ser desenvolvidos outros mais;
Existem 3 tipos de bundles: relacionados a kernel, containeres ou serviços;
Monitoramento e gerenciamento através de console web e asadmin;
Facilidades de um ambiente composto por Netbeans 6.8 + Glassfish v3 + Java EE 6, tendo-se desenvolvimento e deploy de aplicações “sem dor” e com muito mais rapidez. O deploy/redeploy automático mantém sessões e informações existentes de sua aplicação, mesmo após restart do servidor.
Os demos executados durante a apresentação, e que embasavam a teoria passada, se encontram no site mantido pelo próprio Sang Shin, o javapassion.com (não acessar java.passion.com…é NSFW…rs.). Eis alguns abaixo:
Update Center (lista de módulos OSGi instalados, que podem ser instalados e diponíveis para download).
No final de sua apresentação Sang convidou para subir ao palco Jerome Dochez, principal engenheiro da Sun no desenvolvimento do Glassfish, para responder algumas perguntas do público e apresentar o seu overview da nova versão.
Para os interessados, a apresentação de Sang se encontra disponível para download por este link.
JDK7: O futuro da plataforma Java – Simon Ritter
Simon Ritter trouxe um overview para o público com as novidades do JDK7. Os pontos mais relevantes escrevo abaixo:
JDK7 está pronto, aberto e em constante desenvolvimento pela comunidade, o JSE7 ainda não está pronto e precisa de alguns pontos para ser resolvido (no JCP);
Sobre a linguagem as mudanças são: annotations on java types (JSR308); Project coin e modularidade (JSR294). Vale lembrar que todas as mudanças estão aprovadas;
Sobre o core: Projeto Jigsaw (a JSR294 impacta tanto no core quanto na linguagem. Modularidade = Jigsaw); atualização em concorrência e collections (JSR166); novas API’s a respeito de IO (NIO2);
Uma das mudanças interessantes foi o uso de números binários de forma declarativa (int b = 0b01010101, binary b = 0X09AB), separação de grupos de números long por underscore (Long l = 9_938_827_122) e Switch usando string;
Gerenciamento automático de recursos: cláusulas try/catch que sempre precisam de um finally para fechar algum recurso (alguma_coisa.close) agora não mais precisam. A JVM gerencia isso (!);
Multi catch (2 cláusulas de exceção com o mesmo tratamento): talvez possa voltar no JDK7;
O JDK é grande, muito grande (só no JDK6 temos 47 pacotes toplevel e mais de 4000 classes), um problema em relação a tempo de download de pacotes e tempo de startup de algumas aplicações, por se usar bibliotecas demais;
Há dificuldade de se criar uma “plataforma fina, concisa e leve”, principalmente para dispositivos mobile dos dias de hoje, por exemplo. Para isso foi criado o projeto Jigsaw.
A intenção de “código modular” é criar código limpo e bem direcionando para uso, criando uma não dependência de código e uso de bibliotecas entre programadores (commiters) ou código implantado em cliente, não dando propósito a erro. Os módulos terão versionamento, portanto você poderá definir no seu código qual a versão do módulo que você vai querer usar na sua aplicação.
Nessa versão foi bastante pensado nas mudanças a serem feitas, para não cair no erro do assert (java 1.4) e enum (java 1.5), fato que “quebrou muitos códigos” antigamente. Simon reiterou que “trabalhar mudando e adaptando java é realmente pesado”.
O Lançamento final do JDK está marcado para Setembro de 2010. A plataforma Java tende a fica mais poderosa e abrangente, sem dúvida.
Dimas Oliveira é um grande conhecido da comunidade Java no Brasil quando o assunto é TV Digital. Referência, esteve presente no Profissão Java, Java@TV Digital e OpenTDC. Tamir Shabat, especialista em desenvolvimento com Lwuit e TV Digital foi palestrante no Java@TV Digital. Em todos esses eventos eu estive presente e vocês podem acompanhar os posts pelos links anteriores (o Java@TV Digital ainda hei de escrever). Nesse Sun Tech Days a apresentação de ambos foi um “compilado” do que já tinha sido apresentado nesses eventos. Abaixo algumas informações dessa apresentação:
Perspectiva de no próximo ano termos 25 milhões de tv’s ligadas ao sinal digital, ou seja, é uma oportunidade palpável e direta para desenvolvedores gerarem aplicações, sendo que no ano que vem o Ginga estará mais maduro e a disponibilidade de set-up-boxes tende a ser maior;
Histórico da TV Digital não é de hoje: desde 2005 há desenvolvimento;
Para que já conhece Java é preciso aprender cerca de 8% a mais de Java para desenvolver para TV Digital;
TV interativa = TV + aplicações (não é simplesmente um browser com acesso a internet na TV);
No final da apresentação Tamir mostrou uma demo, usando NetBeans + Lwuit (for TV Digital), de uma aplicação interativa para TV Digital baseada em uma aplicação real que a Rede Globo estaria disposta a usar. Um set-up-box foi usado para demostrar ao vivo os exemplos de interatividade desta aplicação.
Ajuste no desempenho do GC – Simon Ritter
Simon baseou-se para sua apresentação em 4 pontos:
Opções para a JVM da Sun;
Garbage collector;
Garbage first;
Dicas para tunning do GC.
No início foi exposta a evolução do gerenciamento de recursos, onde antigamente o desenvolvedor era responsável por alocar e desalocar memória (em C: malloc and free; em C++: new and delete). Hoje no Java só é preciso criar os objetos (“new”). A JVM se encarrega de gerenciar a memória (Garbage Collector).
Basicamente temos 3 tipos de opções, quando gerenciamos o GC:
Standard options: todas plataformas;
-X options: não são aplicáveis a todas as plataformas;
-XX options: -não são aplicáveis a todas as plataformas e podem precisar de privilégios adicionais para usá-las.
As dicas mais importantes passadas pelo Simon foram:
multi processos e cores criam objetos novos (todos tentam acessar o eden ao mesmo tempo): Solução: -XX:TLABSize=size-in-bytes ou -XX:ResizeTLAB;
Serial: indicado para maioria das aplicações para desktop;
Paralelo: indicado para maquinas com multiplos cores e bastante memória;
“JVM ergonomics”: comece usando -XX:+UseParallelGC e -XX:+UseAdaptiveSizePolicy;
Rode a opção -server;
As opções -XX:MaxGCPauseMillis=n e -XX:GCTimeMillis=n podem performar, mas não são garantidas;
Sobre GC e escolhas de Design:
Serial (-XX:+UseSerialGC);
Paralelo (-XX:+UseParallelGC). Para Tuning: -XX:UseParNewGC e -XX:ParallelGCThreads=n, onde n é o número de CPU’s;
Concurrent (-XX:+UseConcMarkSweepGC). Para Tuning: -XX:ParallelCMSThreads=n, onde n é um quarto do número de CPU’s ; -XX:CMSInitiatingOccupancyFraction; -XX:+CMSIncrementalMode (off); -XX:+CMSIncrementalDutyCycle=n% (indicado n=50));
Stop the world;
Compacting (-XX:+UseParallelOldGC);
Non compacting;
Coping.
Sem dúvidas o G1 terá melhorias consideráveis para performance e foram mostrados exemplos de diagramas de alocação de memória com as respectivas legendas. Para saber mais, faça o dowload de um paper da Sun sobre o G1, por esse link.
Programação JavaFX para dispositivos móveis – Angela Caicedo
A apresentação foi bastante técnica e com muitos exemplos de código e demos. Foi uma sessão voltada para desenvolvedores que já conhecem a plataforma JavaFX e a plataforma de desenvolvimento de dispositivos móveis. Em resumo foi passado:
Conceitos de Mobile RIA , MVC, “stage e scene” e construção de UI’s;
Migrando aplicações de JavaFX desktop para JavaFX mobile;
Melhores práticas de performance;
Mobile samples e adição de mídias;
Demos.
A idéia central é: existem várias aplicações e modos de aplicar JavaFX para mobile devices, e essa é uma tendencia do mercado.
É preciso saber trabalhar com Java Micro Edition, MIDP e aplicações e Wireless Toolkit (JavaME SDK). Algumas API’s de Java são essenciais: java.lang e java.io, além das específicas para desenvolvimento mobile: java.microedition. Com isso você consegue criar, editar, compilar, debugar, empacotar, testar e fazer deploy de aplicações (ou seja, tudo…rs).
O ambiente indicado para isso: Netbeans 6.8 + WTK (Wireless Toolkit) 2.5.2/JavaMe SDK 3.0.
Para construir aplicações de UI no MSA use API de alto nível (MIDP 2.0 widgets): é fácil, rápido e tem a beleza nativa de UI;
Há outras API’s disponíveis: JSR226 (SVG Tiny 1.1), JSR184 (3d graphics API) e OpenGL, por exemplo;
JavaFX mobile cria RIA para mobile;
Ao invés de trabalhar com aplicações de media (gimp, photoshop), passar as imagens para o MIDP e só depois portar para o celular, agora você pode usar qualquer ferramenta de media (gimp, photoshop, adobe), passar pelo editor de media do JavaFX e portar isso para JavaFX mobile direto ou trabalhar via Netbeans para depois portar;
Modelo MVC pode ser implementado: Model (dados e sua lógica), View (Rich UI) e Controller (regras de processamento).
Linguagens de criação de scripts: opções para a JVM – Simon Ritter
Finalizando o primeiro dia (ufa!) o lema foi: Languages everywhere. Para o JDK7 é imprescindível saber o poder das linguagens dinâmicas e as mudanças que elas trarão. No caso são 4 que se destacam, ou melhor, são as que realmente são levadas em conta: Groovy, Ruby, Scala e Clojure.
Mas porque o número excessivo de linguagens? Liberdade de escolha e diferentes linguagens resolvem problemas de tipos diferentes. Java + todas elas + JVM : muitos poderes! (domain specific languages).
Tem algumas complicações pois é uma linguagem onde se deve conhecer “onde se colocar as chaves, parênteses, ou chaves”.
A “sacada” é estar por dentro do JDK7 que vai dar suporte a linguagens dinâmicas de forma mais aberta (InvokeDynamic bytecode – JSR292).
Conclusão do dia 1
Como não podia deixar de ser, uma “avalanche” de informação…rs. Apesar de já ter visto muitos dos termos apresentados em outros eventos, sempre é bom revê-los por outras pessoas e com outras explicações. O primeiro dia foi de bom grado para mim, até uma camisa da Sun eu ganhei 🙂 . E a volta para casa mais tranqüila…rs.
Amigos leitores, essa foi a primeira parte do meu relato desse evento. Agradeço desde já os que deram uma passada por aqui e publicarei o mais breve possível a parte 2 da história.