Pular para o conteúdo principal

Entrevista com Rod Johnson no JavaOne2009

 The Developers Conference 2009, um evento organizado pela GlobalcodePara esquentar os ouvidos e nos preparar para como será o The Developers Conference 2009, Rod Johnson nos conta um pouco sobre algumas das novidades do Spring Framework 3.0 em entrevista realizada no último JavaOne.

A transcrição em português da entrevista foi publicada originalmente no site InfoQ com o título Rod Johnson conta o que há de novo no Spring 3.0. Para completar esta transcrição, disponibilizamos a versão em inglês aqui.
Yara Senger: I'm here with Rod Johnson to talk about Spring Framework and market and opinions, so could you talk a little about what's new on Spring this year?

Rod Johnson: Yeah! We've got quite a lot of new stuff pretty much across the board so in development time and also in a runtime in management offerings. I think that the things that are most interesting to developers are that of course we are working our way towards Spring 3.0 final, that's currently going through milestone phases so you can already go and download it. The new features in Spring 3.0 are around REST support, so we have very simple yet powerful REST support fully integrated with Spring MVC and obviously as a result of that the Spring Component Model. We've also added a new Spring Expression Language this allows expressions to be used in annotations and also in XML or other externalized configuration. Another new feature is ... we've introduced the Spring Java Configuration Module which is to be a separate project we've introduced that to the core of Spring, that provides essentially a DSL for defining in Java Spring configuration and it has interesting potential benefits around for example inheritance amongst configuration classes.

Probably, the expression language is going to be the biggest single impact on the core Spring Container, it means that now in either annotations you can actually write an expression and therefore inject the value which is the result of that expression or you can do it in XML. So, for example, your expression may evaluate something based on system properties, it may reference a propriety of another bean in the same application context, it may also have a certain degree of expression logic in there. This is particularly interesting in terms of the annotations syntax that was introduced in Spring 2.5 because it means that the set of things you can do purely in annotations without any external configuration at all is now much larger. So for example if you want a reference now, in an annotated Java class, few other reference values that come from outside Java and it will change without requiring recompilation, you can now do that using an annotation, for example, to reference something that is specified in the proprieties file or reference something that is specified in the system property. So, we've added it an @Value annotation for this purpose which is analogous to @Autowired which is autowire net qualifier which were introduced in 2.5 for injecting other objects managed by Spring.

Besides the Spring Framework, there are also quite a lot of things happening around the Spring open source projects. So, for example, Spring 3.0 is now in milestone 1, sorry, Spring Security 3.0, one of the interesting things about that is it allows security configurations to use expressions. So for example it can specify which kind of parts in the application are secured using the Spring expression language. So that's an example of how I think you'll see pretty much all the Spring open source projects benefiting from the expression language, that will also include web flow version 3.0, Spring Integration 2.0, Spring Batch, etc.

Another new open source project which should be pretty exciting to Java developers is the Spring Roo project, this is something that we've really had a lot of buzz about it at Java One, I mean we had actualy hundreds of people come to our booth to see demos of it. What it is ... it's a sophisticated round tripping code generator. Obviously when you talk to Java developers about code generation a lot of them think ... Uh! Code generation sucks! And in fact traditionally I think that a lot of code generation approaches have sucked. The reason that they've sucked is firstly that they swept a lot of complexity under the carpet, so the assumption was ... well if you're generating this code who cares how much code there is how complex it is. The other reason that they tended to suck was way to many of them came from the kind of philosophical approach behind MDA which held that it's really, really bad to write Java code. They really want you wanna do is draw pretty pictures and it's terrible to write code. We very much believe that you shouldn't sweep complexity under the carpet and also we think that writing code is just fun. I mean frankly I would far prefer to program in Java than to program in UML. And ... Spring Roo uses code generation in a way that seems to be very appealing to practical developers. So what it does in the first instance is it enables you to create projects incredibly quickly. So you have a somewhat similar scaffolding capability that is reminiscence of Ruby on Rails. So you can go Roo, create APP, you could create entities, you can get CRUD operations on those entities. Roo generates absolutely everything you need in that application to get it running in a matter of minutes. However, what I think sets Roo apart is firstly it is designed with the understanding that you actually want to write Java code. So Roo is round tripping it doesn't just do one way generation like something like AppFuse and SeamGen. What it does is maintain it's own model of your entire application. So then if you go write code yourself Roo can comprehend that and be that in mind as it may detect future things in the future. So that means that Roo doesn't just give you a kind of bootstrap or a quick start when you're starting an application it can add value like if you want to add further entities, it can add a lot of value to track. The architectures that Roo generates building on Spring 3.0 so, you know, represent best practice in present open source stack. So I really strongly encourage Brazilian developers to download Roo and I think that they'll find that they like what they see.

Hand in hand with Roo we've also announced a few weeks ago the Spring Source Tool Suite, Eclipse distribution which includes the best Spring tooling available is now free. So it's not actually open source but it is a free commercial product and there are no restrictions on that at all. So it's perfectly acceptable for any individual, company or organization to use any way they please and it's absolutely free. It's very closely integrated with Roo and also our server technologies and it really provides you a one stop shop where you can download something and have an application running on a web server in about ten minutes.

We also have been doing of course a lot in the deployment and operation space. Recently we announced the tc Server product that essentially adds to Tomcat enterprise grade managements. So for example one of the challenges with Tomcat is that it's robust, it's performant, developers love it because it's very light weight and quick. However, it essentially has no mode node management capability. So if you go and deploy Tomcat into your data center and you're managing say twenty or two hundred or five hundred nodes of Tomcat how do you roll out applications to allow service, how do you start service, stop service, monitor service, get lots if there are concerning behaviors, that ... The tc Server product builds on Tomcat to address all of those requirements.

The other line of management technology with tc Server is built on Hyperic HQ which provides the management fabric a cross at technologies as a whole and of course recently we announced that Spring Source had acquired Hyperic, the company behind HQ. So we're pretty excited at the moment we're executing at a lot of fronts and people are pretty excited about what we're producing.

TDC, uma grande oportunidade!
By Spock


Leonardo Pacheco GCLPZC disse…
Apesar do bom trabalho do InfoQ ao transcrever a entrevista, é sempre muito bom ter o material em sua língua original, para que não se perca nenhum detalhe.
Boa inicitiva novamente.

Daniele disse…
Muito interessante para quem e da area ter cada vez mais conhecimento.

Daniele - GCDF

Postagens mais visitadas deste blog

Melhorando Performance de JPA com Spring Web Flow

No TDC2009 realizado pela Globalcode em São Paulo foi apresentado um Lightning Talk sobre um problema específico de performance em aplicações Web com JPA e uma possível solução usando o Spring Web Flow . Num período de 15 minutos, os slides a seguir foram apresentados e seguidos de alguns vídeos de demonstração de uma aplicação Web em execução. Melhorando performance do JPA com Spring Web Flow View more presentations from Dr. Spock . Nesta apresentação foi dito que temos encontrado problemas de performance em aplicações Web que utilizam as tecnologias JSF + JPA + Ajax quando precisamos gerenciar um contexto de persistência (EntityManager). Estes problemas se manifestam quando aplicamos uma resposta errada para a pergunta: Como gerenciar o contexto de persistência numa aplicação Web? Se as aplicações não usam Ajax e limitam-se ao modelo orientado a requisições, a solução mais comum é o uso do design pattern chamado "Open Session In View Filter". Através deste design


Além do conteúdo ao vivo transmitido online nas edições do TDC, agora você pode ter acesso à centenas de palestras gravadas, através da nossa nova plataforma de vídeos - o TDC Online, que reúne todas as Trilhas premium, Stadium e Salas dos Patrocinadores das edições anteriores de 2022, TDC Innovation e TDC Connections.  Para acessar, basta clicar na edição em que você participou ( TDC Innovation ou TDC Connections ); Fazer o mesmo login (com e-mail e senha) cadastrados na hora de adquirir ou resgatar o seu ingresso no TDC; E clicar na Trilha de sua opção, e de acordo com a modalidade do seu ingresso. Logo em seguida, você será direcionado para a seguinte página com a lista de todas as palestras por Trilha: Pronto! Agora você tem acesso à centenas de palestras gravadas da sua área de interesse, para assistir como e quando quiser! Caso tenha esquecido a senha, clique na opção "Esqueci a senha" , insira o e-mail que você realizou para o cadastro no evento, e aparecerá a op

O que é Lógica de programação?

Este é o segundo de uma série de posts voltados aos leitores do blog que estão dando início à carreira de desenvolvimento de software. O assunto de hoje é a lógica de programação. Para ler antes: Entendendo como funciona a programação de computadores: linguagens de programação, lógica, banco de dados A lógica de programação é um pré-requisito para quem quer se tornar um desenvolvedor de software, independente da linguagem de programação que se pretende utilizar. Mas o que é de fato a Lógica de Programação e como saber se eu tenho esse pré-requisito? A lógica de programação nada mais é do que a organização coerente das instruções do programa para que seu objetivo seja alcançado. Para criar essa organização, instruções simples do programa, como mudar o valor de uma variável ou desenhar uma imagem na tela do computador, são interconectadas a estruturas lógicas que guiam o fluxo da execução do programa. Isso é muito próximo ao que usamos em nosso cotidiano para realizar atividad

Dica rápida: Apagando registros duplicados no MySQL

Ola pessoal, Sei que vocês estão acostumados a ver posts meus sobre tecnologia móvel ou algo relacionado, mas hoje vou falar sobre um pequeno "truque" que usei esse final de semana com o MySQL. Eu estava desenvolvendo o lado servidor de uma nova aplicação mobile (ahh, então "tem a ver" com mobile hehe), e quando fui fazer alguns testes percebi que tinha quase 7 mil registros duplicados (!!!) na minha base de dados! Bom, o meu primeiro reflexo como programador foi pensar em fazer um "programinha" Java para buscar e deletar todos esses registros duplicados. Mas ai, resolvi tirar as teias de aranha dos neurônios e usar os vários anos de experiência que passei com SQL e criar uma query que fizesse esse trabalho todo de uma vez!! E a query ficou assim: delete from TABLE_NAME USING  TABLE_NAME, TABLE_NAME  AS  auxtable WHERE   ( NOT  TABLE_NAME.id  =  auxtable.id ) AND   ( TABLE_NAME.name  =  auxtable.name ) Explicação direta: TABLE_NAME

JavaMail: Enviando mensagem HTML com anexos

Introdução Depois do post "JavaMail: Enviando e-mail com Java" , que apresentava como enviar um e-mail com Java, resolvi complementar a assunto apresentando como enviar uma mensagem formatada, em HTML , e também como realizar o envio de anexos. Bibliotecas Além da biblioteca JavaMail, veja mais no post anterior , é necessário incluir o JavaBeans Activation Framework (JAF), apenas se a versão utilizada for anterior ao JSE 6.0 , que já tem o JAF incluso. O JAF está disponível em http://www.oracle.com/technetwork/java/javase/downloads/index-135046.html , e neste download encontramos, alguns exemplos na pasta demo , documentação, incluindo javadocs, na pasta docs e a biblioteca activation.jar , que deve ser acrescentada no classpath da aplicação para versões anteriores ao JSE 6.0. Exemplo Primeiramente devemos realizar a configuração da javax.mail.Session e da javax.mail.internet.MimeMessage , estes passos podem ser vistos no post anterior . Agora vamos montar um

Devo fazer um curso ou ler um livro?

Acredito que todos os instrutores ou professores, independentemente da área, escola ou centro de treinamento, já devam ter recebido essa pergunta alguma vez na vida: devo fazer um curso ou ler um livro? Para responder a essa pergunta, precisamos avaliar os prós e contras de cada opção. Trabalho com treinamento há algum tempo e, hoje, recebi essa pergunta de um aluno. Não adianta responder a ou b sem argumentar, demonstrando as opções conforme a situação do aluno. O conteúdo, a forma de transmissão e a capacidade de assimilação do indivíduo são chaves para haver benefício maior de aprendizado. Tanto em um bom curso quanto em um bom livro, o conteúdo é a premissa básica . Por conteúdo entendemos: se está organizado; se respeita pré-requisitos; se promove o aprendizado guiado e incremental; se aborda de forma satisfatória os principais pontos; se tem bom balanço entre teoria, exemplos e prática (favorecendo exemplos e prática); se tem como premissa a acessibilidade possível (e cabível) pa