Blog do Urubatan
msgbartop
Desenvolvedor, Palestrante, Escritor, Nerd Assumido e Pai do Marcus :D
msgbarbottom

27 Nov 08 Certificação di Gratis: Prova beta para Sun Certified Developer for Java Web Services 5

Yeap, exatamente isto, a dica ta meio atrasada, mas só me registrei para fazer a prova hoje.
Para quem já tem a certificação SCJP (Sun Certified Java Programmer), pode fazer até o próximo dia 10/12/2008 “di gratis” a prova beta da nova certificação da SUN.
Não acredito que certificação prove alguma coisa, mas sempre ajuda colocar mais uma sigla no currículo, já que as empresas gostam delas por algum motivo :D

Quem quiser se inscrever, basta ligar para qualquer centro prometric ou acessar a página da prometric diretamente, não é necessário um voucher paraesta prova.

O conteúdo que estão pedindo não é nada demais para quem já trabalha com web services, segue o outline:

Exam Testing Objectives

  1. XML Web Service Standards
    1. Given XML documents, schemas, and fragments determine whether their syntax and form are correct (according to W3C schema) and whether they conform to the WS-I Basic Profile 1.1.
    2. Describe the use of XML schema in Java EE Web services
  2. SOAP 1.2 Web Service Standards
    1. List and describe the encoding types used in a SOAP message.
    2. Describe the SOAP Processing and Extensibility Model.
    3. Describe SOAP Message Construct and create a SOAP message that contains an attachment.
  3. Describing and Publishing (WSDL and UDDI)
    1. Explain the use of WSDL in Web services, including a description of WSDL’s basic elements, binding mechanisms and the basic WSDL operation types as limited by the WS-I Basic Profile 1.1.
    2. Describe how WSDL enables one to separate the description of the abstract functionality offered by a service from concrete details of a service description such as “how” and “where” that functionality is offered.
    3. Describe the Component Model of WSDL including Descriptions, Interfaces, Bindings, Services and Endpoints.
    4. Describe the basic functions provided by the UDDI Publish and Inquiry APIs to interact with a UDDI business registry.
  4. JAX-WS
    1. Explain JAX-WS technology for building web services and client that communicate using XML
    2. Given a set of requirements for a Web service, such as transactional needs, and security requirements, design and develop Web service applications that use JAX-WS technology
    3. Describe the Integrated Stack (I-Stack) which consists of JAX-WS, JAXB, StAX, SAAJ
    4. Describe and compare JAX-WS development approaches.
    5. Describe the features of JAX-WS including the usage of Java Annotations.
    6. Describe the architecture of JAX_WS including the Tools SPI that define the contract between JAX-WS tools and Java EE.
    7. Describe creating a Web Service using JAX-WS.
    8. Describe JAX-WS Client Communications Models.
    9. Given an set of requirements, design and develop a Web service client, such as a Java EE client and a stand-alone client, using JAX-WS.
    10. Given a set of requirements, create and configure a Web service client that accesses a stateful Web service.
  5. REST, JSON, SOAP and XML Processing APIs (JAXP, JAXB and SAAJ)
    1. Describe the characteristics of REST Web Services.
    2. Describe the characteristics of JSON Web Services.
    3. Compare SAOP web services to REST Web Services.
    4. Compare SAOP web services to JSON Web Services.
    5. Describe the functions and capabilities of the APIs included within JAXP.
    6. Describe the functions and capabilities of JAXB, including the JAXB process flow, such as XML-to-Java and Java-to-XML, and the binding and validation mechanisms provided by JAXB.
    7. Create and use a SOAP message with attachments using the SAAJ APIs.
  6. JAXR
    1. Describe the function of JAXR in Web service architectural model, the two basic levels of business registry functionality supported by JAXR, and the function of the basic JAXR business objects and how they map to the UDDI data structures.
    2. Create JAXR client to connect to a UDDI business registry, execute queries to locate services that meet specific requirements, and publish or update information about a business service.
  7. Java EE Web Services
    1. Identify the characteristics of and the services and APIs included in the Java EE platform.
    2. Explain the benefits of using the Java EE platform for creating and deploying Web service applications.
    3. Describe the functions and capabilities of the JAXP, DOM, SAX, StAX, JAXR, JAXB, JAX-WS and SAAJ in the Java EE platform.
    4. Describe the role of the WS-I Basic Profile when designing Java EE Web services.
  8. Security
    1. Explain basic security mechanisms including: transport level security, such as basic and mutual authentication and SSL, message level security, XML encryption, XML Digital Signature, and federated identity and trust.
    2. Identify the purpose and benefits of Web services security oriented initiatives and standards such as Username Token Profile, SAML, XACML, XKMS, WS-Security, and the Liberty Project.
    3. Given a scenario, implement Java EE based web service web-tier and/or EJB-tier basic security mechanisms, such as mutual authentication, SSL, and access control.
    4. Describe factors that impact the security requirements of a Web service, such as the relationship between the client and service provider, the type of data being exchanged, the message format, and the transport mechanism.
    5. Describe WS-Policy that defines a base set of constructs that can be used and extended by other Web specifications to describe a broad range of service requirements and capabilities.
  9. Developing Web Services
    1. Describe the steps required to configure, package, and deploy Java EE Web services and service clients, including a description of the packaging formats, such as .ear, .war, .jar, annotations and deployment descriptor settings.
    2. Given a set of requirements, develop code to process XML files using the SAX, StAX, DOM, XSLT, and JAXB APIs.
    3. Given an XML schema for a document style Web service create a WSDL file that describes the service and generate a service implementation.
    4. Given a set of requirements, create code to create an XML-based, document style, Web service using the JAX-WS APIs.
    5. Implement a SOAP logging mechanism for testing and debugging a Web service application using Java EE Web Service APIs.
    6. Given a set of requirements, create code to handle system and service exceptions and faults received by a Web services client.
  10. Web Services Interoperability Technologies
    1. Describe WSIT, the features of each WSIT technology and the standards that WSIT Implements for each technology and how it works.
    2. . Describe how to create a WSIT client from a Web Service Description Language (WSDL) file.
    3. Describe how to configure web service providers and clients to use message optimization.
    4. Create a Microsoft Windows Communication Foundation (WCF) client that accesses a Java web service.
    5. Describes the best practices for production and consumption of data interoperability between WCF web services and Java web service clients or between Java web services and WCF web service clients.
  11. General Design and Architecture
    1. Describe the characteristics of a Service Oriented Architecture (SOA) and how Web services fit to this model.
    2. Given a scenario, design a Java EE web service using Web Services Design Patterns (Asynchronous Interaction, JMS Bridge, Web Service Cache, Web Service Broker), and Best Practices.
    3. Describe how to handle the various types of return values, faults, errors, and exceptions that can occur during a Web service interaction.
    4. Describe the role that Web services play when integrating data, application functions, or business processes in a Java EE application.
    1. Endpoint Design and Architecture
    1. Given a scenario, design Web Service applications using information models that are either procedure-style or document-style.
    2. Describe the function of the service interaction and processing layers in a Web service.
    3. Design a Web service for an asynchronous, document-style process and describe how to refactor a Web Service from a synchronous to an asynchronous model.
    4. Describe how the characteristics, such as resource utilization, conversational capabilities, and operational modes, of the various types of Web service clients impact the design of a Web service or determine the type of client that might interact with a particular service.

Mais informações na página da certificação.
Depois da prova (vou fazer dia 10) eu posto o que achei das questões por aqui.

Tags: , ,

10 Nov 08 Java Enterprise Edition 6.0 esta ficando bem legal

O Java EE esta cada vez mais simples de se utilizar, então por definição esta cada vez melhor.
O motivo deste post são algumas melhorias vindas da especificação do EJB 3.1 que eu achei espetaculares:
Interface local opcional
Exatamente isto, agora a interface local dos EJBs é Opcional. Isto permite que o seguinte código seja válido:

1
2
3
4
@Stateless
public class HelloBean {
   public String hello() { return "hello"; }
}

E o cliente utiliza isto mais ou menos assim:

1
2
3
@EJB Hello helloRef;
...
helloRef.hello();

Mesmo a classe sendo acessada diretamente, o cliente nunca instância o objeto com um “new”, ele recebe um proxy, exatamente como se estivesse trabalhando com uma interface, mas mesmo assim o modelo fica mais simples e é menos trabalho para o programador :D

Nomes globais JNDI portáveis
Não sei se fui apenas eu, mas é um inferno desenvolver aplicações Java EE que precisem acessar EJBs em mais de um container, exceto se elas puderem fazer isto via anotações o que não cobre 100% dos casos, cada container utiliza um nome global diferente para o EJB, agora no Java EE 6 o nome global dos EJBs faz parte da especificação, então vai ser igual para todos os containers :D
Só quero ver como eles vão fazer para manter a compatibilidade com versões anteriores dos mesmos containers, acho que os EJBs vão ter nome e apelido :D
A sintaxe para os nomes globais dos EJBs vai ser a seguinte:
java:global[/<app-name>]/<module-name>/<bean-name>
E caso o session bean exponha mais de uma interface, o nome vai ser:
java:global[/<app-name>]/<module-name>/<bean-name>/<intf-name>
Isto quer dizer que para o EJB abaixo:

1
2
@Stateless
public class FooBean implements FooRemote { ... }

Publicado em um arquivo de nome foobar.jar, podemos acessa-lo com o seguinte código:

1
FooRemote foo = (FooRemote) =  new InitialContext().lookup("java:global/foobar/FooBean")

E acabou o nome especifico para cada container, ou pior, nome para cada deployment como alguns containers faziam.

Empacotamento de EJBs Simplificado
No Java EE 6 não será mais necessário em uma aplicação criar um .war para a aplicação web, um .jar para os EJBs e empacotar tudo isto em um .ear só para acessar alguns EJBs pela aplicação WEB, vai bastar colocar os EJBs dentro do WEB-INF/classes ou até mesmo em um jar dentro do WEB-INF/lib da aplicação WEB e tudo vai funcionar como mágica :D

Singleton EJBs
Esta última novidade eu não sei se é boa ou ruim …
Singletons são a forma mais podre de programação não orientada a objetos em uma linguagem OO.
Claro que em raros casos um singleton é realmente utilizado como um singleton e neste caso ele é realmente útil, mas eu vi apenas uns dois ou três casos destes até hoje, todas as outras aplicações que tem diversos singletons utilizam os mesmos como um repositório de métodos que não pertencem a objeto nenhum. Ou seja, uma entidade não OO na aplicação …
Mas fora a discussão filosófica, o pior é achar que você tem um singleton e a aplicação possuir duas instâncias do mesmo, por que na implementação clássica de singletons no java, eles são singletons apenas por classloader, o que causa diversos problemas …
Para solucionar este problema, o Java EE 6 possui EJBs Singletons :D
Exatamente isto.
Eles são utilizados como qualquer outro EJB, mas existira apenas uma instância dele no container ou no cluster, ou seja, apenas uma instância na aplicação …
Para criar um EJB Singleton, o código vai ser mais ou menos este:

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.sun.ejb31.test;
 
import javax.ejb.Singleton;
@Singleton
public class CounterBean {
    private int hitCount;
 
    //Perceba a utilização de synchronized aqui
    public synchronized int incrementAndGetHitCount() {
        return hitCount++;
    }
 
}

E era isto, utilize como no primeiro exemplo!

Bom, por enquanto era isto, estou achando que o Java EE 6 vai matar a pau, ainda mais juntando com a especificação de WebBeans que deve sair junto!

Tags: , ,

11 Oct 07 Alguns bits de tecnologia :D

Segue mais uma daquelas grandes coletâneas de links que falam de tudo um pouco, tem Java, .NET, Ruby, Rails, Python, …

E este último merece um certo destaque, um post sobre a péssima postura da Aptana para com a comunidade, quando eles pegaram um monte de código que foi escrito pela comunidade, juntaram com o código do Eclipse e resolveram mudar a licensa de tudo, se alguem esquentar a cabeça com isto eles poderiam até mesmo ser processados, por que estão quebrando a licensa do eclipse e por conseqüência também do Radrail, e quem baixar os fontes hoje não pode mais criar uma distribuição diferente baseado nele.

Bom, acho que era isto, vou tentar escrever com mais frequencia para não acumular tanta coisa junto :D

Tags: , , ,

09 Oct 07 O pessoal de sampa esta se mexendo, mas nos aqui do RS ja vamos começar também

Ruby On Rails LogoSe você mora em SP e programa em rails, acha interessante ou quer saber do que se trata, de uma passada no blog do Akita e participe do encontro que eles estão organizando.

Mas se você mora no RS não se desanime por que nos ja estamos começando a organizar algo parecido por aqui também :D

Por falar nisto ja temos uma data para a segunda turma do curso de Ruby on Rails da Tech Office, além de cursos de Spring Framework, JSF e um curso de JPA + Servlets/JSP + EJB 3 ja podem se inscrever para qualquer um deles :D

Tags: , ,

04 Oct 07 SCEA 5 – Impressões sobre a prova e comentários sobre o conteúdo

Vou começar agradecendo ao todos os que me desejaram boa sorte no post anterior. E também lembrar que não posso escrever aqui quais questões cairam realmente na prova por causa do NDA que precisamos concordar antes do inicio de qualquer prova de certificação.

Mas vamos ao que interessa, dicas para quem ainda vai fazer a prova e comentários em geral (pelo menos eu acho que interessa :D )

  • A prova é cansativa, descansem bastante antes de ir fazer a prova, são 153 questões, e vocês tem 4:30h para responder todas, eu levei 3:30h.
  • Tem muitas questões com um texto bem grande descrevendo um problema qualquer, e a questão é: qual seria a melhor opção para este problema, ou quais duas tecnologias a baixo podem/não podem ser utilizadas para resolver este problema.
  • A SUN concorda que JSF tem problemas para ser indexado por search engines, e é bom que vocês lembrem disto.
  • Design Patterns, Design Patterns, Design Patterns, tem muitas questões sobre Design Patterns na prova
    • É preciso praticamente ter no sangue os patterns do GoF e conhecer bem os padrões do Java EE
  • É imrpescindivel conhecer toda a stack Java EE
    • Para que serve Servlet
    • Para que serve JSP
    • Para que serve JSF
    • Para que serve JMS
    • Para que serve JMX
    • Para que serve EJB
    • Quais tipos de EJB podem ou não ser transformados em web services
    • Como implementar e acessar web services
    • Segurança declarativa e programatica, quando utilizar cada uma
      • Ambiente Java EE (EJB3)
      • Servlets + JSP
      • Applets
      • JNLP
    • O que tem suporte a JTA, como é este suporte, excessões, …
    • O que é e para que serve JCA
  • Volto a dizer, é preciso conhecer muito bem Design Patterns.

Acho que foi mais ou menos isto, achei a prova muito cansativa, e a maioria das questões muito extensas.

Lembrei que eu odeio aquelas questões de arrastar quadrinhos.

Falando nisto, alguem sabe para que serve o pattern Mediator? e o pattern Strategy?

Bom, boa sorte para quem ainda vai fazer a prova, espero que este post ajude em alguma coisa :D

Se quiserem perguntar alguma coisa é só deixar um comentário.

PS.: O resultado da prova não sai na hora por ser uma prova beta, aparece só a mensagem dizendo que você vai receber o resultado entre 6 e 8 semanas, agora vou correr atraz de descobrir como vai funcionar o esquema para a segunda parte da prova :D

Tags:

03 Oct 07 SCEA 5 – Sun Certified Enterprise Architect 5 – Saindo para a prova

Estou saindo agora para fazer a prova, espero ir bem, pois estudei muito pouco, marquei a prova sexta passada e a única data disponível era hoje :(

Queria ter marcado a prova mais para o final do mes para ter tempo de estudar …

Mas seguem os objetivos da prova, só pro cima o que eu estudei …

Application Design Concepts and Principles

1.1 Explain the main advantages of an object oriented approach to system design including the effect of encapsulation, inheritance, delegation, and the use of interfaces, on architectural characteristics.
1.2 Describe how the principle of “separation of concerns” has been applied to the main system tiers of a Java EE application. Tiers include client (both GUI and web), web (web container), business (EJB container), integration, and resource tiers.
1.3 Describe how the principle of “separation of concerns” has been applied to the layers of a Java EE application. Layers include application, virtual platform (component APIs), application infrastructure (containers), enterprise services (operating system and virtualization), compute and storage, and the networking infrastructure layers.

Estudei muito pouco aqui, espero que a experiência profissional me ajude nesta:D
Common Architectures

2.1 Explain the advantages and disadvantages of two tier architectures when examined under the following topics: scalability, maintainability, reliability, availability, extensibility, performance, manageability, and security.
2.2 Explain the advantages and disadvantages of three tier architectures when examined under the following topics: scalability, maintainability, reliability, availability, extensibility, performance, manageability, and security
2.3 Explain the advantages and disadvantages of multi-tier architectures when examined under the following topics: scalability, maintainability, reliability, availability, extensibility, performance, manageability, and security.
2.4 Explain the benefits and drawbacks of rich clients and browser-based clients as deployed in a typical Java EE application.
2.5 Explain appropriate and inappropriate uses for Web Services in the Java EE Platform

Integration and Messaging

3.1 Explain possible approaches for communicating with an external system from a Java EE-based system given an outline description of those systems and outline the benefits and drawbacks of each approach.
3.2 Explain typical uses of Web Services and XML over HTTP as mechanisms to integrate distinct software components.
3.3 Explain how Java Connector Architecture and JMS are used to integrate distinct software components as part of an overall Java EE application.

Business Tier Technologies

4.1 Explain and contrast uses for Entity Beans, Entity Classes, Stateful and Stateless Session Beans, and Message Driven Beans and understand the advantages and disadvantages of each type.
4.2 Explain and contrast the following persistence strategies: Container Managed Persistence (CMP) BMP, JDO, JPA, ORM and using DAOs (Data Access Objects) and direct JDBC-based persistence under the following headings: ease of development, performance, scalability, extensibility and security.
4.3 Explain how Java EE supports the deployment of server-side components implemented as Web Services and the advantages and disadvantages of adopting such an approach.
4.4 Explain the benefits of the EJB3 development model over previous EJB generations for ease of development including how the EJB container simplifies EJB development.

Web Tier Technologies

5.1 State the benefits and drawbacks of adopting a web framework in designing a Java EE application
5.2 Explain standard uses for JSP and Servlet technologies in a typical Java EE application.
5.3 Explain standard uses for JSF technology in a typical Java EE application.
5.4 Given a system requirements definition, explain and justify your rationale for choosing a web-centric or EJB-centric implementation to solve the requirements. Web-centric means that you are providing a solution that does not use EJBs. EJB-centric solution will require an application server that supports EJBs.

Basicamente JSF, JSP e Servlets, ja preparei bastante material para curso, e estudei bastante :D

Applicability of Java EE Technology

6.1 Given a specified business problem, design a modular solution implemented using Java EE which solves that business problem.
6.2 Explain how the Java EE platform enables service oriented architecture (SOA) -based applications.
6.3 Explain how you would design a Java EE application to repeatedly measure critical non-functional requirements and outline a standard process with specific strategies to refactor that application to improve on the results of the measurements.

Isto é basicamente esperiência profissional, Trabalho com isto o tempo todo :D

Patterns

7.1 From a list, select the most appropriate pattern for a given scenario. Patterns are limited to those documented in the book – Alur, Crupi and Malks (2003). Core J2EE Patterns: Best Practices and Design Strategies 2nd Edition and named using the names given in that book.
7.2 From a list, select the most appropriate pattern for a given scenario. Patterns are limited to those documented in the book – Gamma, Erich; Richard Helm, Ralph Johnson, and John Vlissides (1995). Design Patterns: Elements of Reusable Object-Oriented Software and are named using the names given in that book.
7.3 Select from a list the benefits and drawbacks of a pattern drawn from the book – Gamma, Erich; Richard Helm, Ralph Johnson, and John Vlissides (1995). Design Patterns: Elements of Reusable Object-Oriented Software.
7.4 Select from a list the benefits and drawbacks of a specified Core J2EE pattern drawn from the book – Alur, Crupi and Malks (2003). Core J2EE Patterns: Best Practices and Design Strategies 2nd Edition.

Aqui estudei bastante, li a descrição de vários patterns, espero não me confundir na hora …

Security

8.1 Explain the client-side security model for the Java SE environment, including the Web Start and applet deployment modes.
8.2 Given an architectural system specification, select appropriate locations for implementation of specified security features, and select suitable technologies for implementation of those features
8.3 Identify and classify potential threats to a system and describe how a given architecture will address the threats.
8.4 Describe the commonly used declarative and programmatic methods used to secure applications built on the Java EE platform, for example use of deployment descriptors and JAAS.

O único comentário que tenho sobre isto é: JAAS é um saco!

Bom, me desejem sorte :D

Tags:

01 Oct 07 Review: ZK Framework – O modo mais simples de fazer uma Aplicação Web Rica

Este ótimo review foi escrito pelo Marcos de Sousa. Muito obrigado pela colaboração!


Parte I – ReviewIntroduçãoZK é uma framework web ajax open source, que pemite o desenvolvimento de interfaces ricas para aplicações web com pouca programação e um custo de desenvolvimento reduzido, tal como as antigas aplicações desktop.

ZK foi o primeiro projecto ajax no SourceForge.net, acumulou 450.000 downloads e 800.000 visitantes, e foi referenciado por mais de 4.000 websites desde o lançamento da primeira versão em 2005.

Simplesmente Rico

Basicamente o ZK possui quase tudo feito de bandeja, ora vejamos a versão ZK 3.0.0-FL-2007-09-28:

  • Componentes:
  • 79 XUL e 83 HTML componentes prontos: Tabbox, grid, listbox, tree, menu, combobox, bandbox, datebox, chart, hbox, vbox, window, slider, paging, audio, image, timer, include, iframe, etc
  • Drag-and-drop suportado por todos componentes
  • Menu de Contexto e Tooltips customizaveis suportado por todos componentes
  • Ordenação Customizada de listbox, grid etc
  • Auto-preenchimento para combobox
  • “Load on demand” sem escrever nenhuma linha de código, desde a versão 2.4.0
  • “Live data” ou “Load on demand” para listbox
  • Todos componentes são clonáveis e serializáveis
  • Validação e formatação para componentes de entrada de dados, com suporte completo a uso de expressões regulares e $#,##0
  • 100% Java API para os componentes Google Maps, FCKeditor, DOJO e Timeline
  • Componente Tree com paginação
  • Server push, chamado de reverse-ajax, permite o servidor enviar dados para clientes activos, ou seja, facilmente desenvolvemos um CHAT.
  • Em adição componentes TreeModel, Timebox e Flash
  • Modelo server centrico e baseado em eventos:
  • Mais de 20 eventos suportados; onChange, onChanging, onScroll, onSelect, on Show, onZIndex, etc
  • Todos eventos são processados no servidor
  • Todos eventos estão sincronizados. Não possui problema “Racing Condition”
  • Scripting usando expressões EL. Inclui mas não limitado a Java, Javascript, Ruby and Groovy. A escolha é sua :D .
  • Mudanças no User-interface sem necessidade de restarting da aplicação
  • Anotações que permite uma página acessar base de dados sem escrever código java
  • Macro componentes
  • Facilidade em encapsular componentes puramente clientes como componentes do ZK usando 100% Java API
  • Dialogos Modais verdadeiramente server-side
  • Internacionalização
  • MVEL plug-in

Facilidade de utilização

Simplicidade é um dos valores de base do ZK. Outra das facilidades que se encontra nessa framework, é a disponibilidade com que a sua equipa de desenvolvedores está disposta a ajudar.

A criação de novos/customizados componentes é bastante simples.

A documentação é muito boa e bem detalhada.

Plataforma Independente

  • ZK Mobile foi lançado e está na versão 0.8.6 com 10 MIL (Mobile Interactive Language) componentes já de bandeja: listbox, listitem, textbox, image, label, command, datebox, decimalbox, intbox, frame
  • A ideia por trás do ZK Base está mantida no desenvolvimento do ZK Mobile, ou seja, todos as características acimas mantém-se
  • ZK suporta os seguintes browsers: Internet Explorer 6+/7, Firefox 1+, Safari 2+, Mozilla 1+, Opera 9+ and Camino 1+.
  • Corre em qualquer web server que suporta Servlet 2.3+ e JVM 1.4+

Mega Componentes, Colaboração da Comunidade e Integração com outras frameworks e bibliotecas Javascript

ZK é uma das framework com um mais componentes e diversificados. E em cada versão novos componentes têm vindo a serem lançados. Está em andamento o desenvolvimento de componentes de larga escala como folha de cálculo “spreadsheets” e forums. Alias, já está disponível para download o primeiro SIP de spreadsheet. Comunidade open source é tudo sobre colaboração. ZK insentiva a comunidade na criação de novos componentes e ideias. A comunidade participa activamente e é citada pela contribuição que faz.

Todo o trabalho complicado é feito pela equipe de ZK. Se quiser algum novo componente ou sugerir melhorias/integração pode submeter na lista de “Feature Requests”.

Google Maps, FCKeditor, DOJO e Timeline já estão integrados desde as versões mais antigas.

Integração com Spring, Hibernate, bem como com Seasar (http://www.seasar.org/en/index.html, é a framework open source de Dependency-Injection mais popular no Japão).

A integração com Jboss Seam, bem como com tags JSP já está pronta.

A integração com Yui-Ext (http://www.extjs.com/, uma das mais famosas bibliotecas javascript), simplesmente é uma das melhores novidades. É mesmo para ficar de boca aberta. E mais ainda, todos os componentes do Yui-Ext serão integrados com ZK.

O desenho de layouts é sempre complicado para desenvolvedores. Logo, Ext Layout de Yui-Ext foi integrado. Mas, como se sabe usando plug-in externos acabamos pagando um preço (performance), logo a equipe do ZK lançou o ZK Layout de modo a trazer simplicidade, flexibilidade e poder no desenho de layout, isso aumenta a performance pois reduziram do Ext Layout 500 KB para o ZK Layout 20KB. Até parece que pagamos os caras de ZK para trabalharem para nós .

Para os amantes de JSF (JavaServer Faces), estavam todos tristes, pois, até agora nada foi dito de JSF. Em voz alta, já está integrado ZK em forma de componentes.

Confira nas referências os links com os artigos de integração com as frameworks passo a passo.

Histórico de Lançamento de versões do ZK

Dá para perceber o quanto a equipa do ZK está trabalhando nele com bastante dedicação.

Desvantagens

A licença de ZK é bastante crtiticada. No entanto, vale a pena dizer que segue a mesma licença do famoso MySQL.

Conclusão

Muito ficou por analisar (por exemplo as desvantagens do ZK). No entanto isso pode ser considerado lendo o artigo do Cameron Smith – ZK Rich Client Framework and Agile Development em Inglês http://www.theserverside.com/tt/articles/article.tss?l=ZKandAgile. No artigo ele faz uma discussão e depois apresenta um tutorial. Faz a comparação entre as frameworks RIA: Echo2, ZK, OpenLaszlo, Flex, GWT.

Devido a variedade de componentes de fabrica já prontos para serem usados, ajax de raíz (sem esforço), integração com frameworks populares como Spring, Hibernate, JSF, etc, devido ao suporte da comunidade, devido a ser open source, etc torna o ZK uma escolha privilegiada, principalmente no desenvolvimento de aplicações web para Intranet.

Referências

Sobre Marcos de Sousa

Marcos de Sousa actua na área de desenvolvimento há mais de cinco anos. É desenvolvedor no Banco BCI Fomento (www.bcifomento.co.mz). Setembro 2007, Maputo – Moçambique.


01/10/2007 – Alguns dados sobre o projeto atualizados no post

Tags: , ,

29 Sep 07 Coletânea de Links

Bom, acho que era isto, desculpem pelo tempo sem postar, é que a semana foi corrida com o Curso de Rails, mas agora vou voltar a postar com mais frequência!

Amanha ou segunda devo escrever alguma coisa sobre o Curso, que na minha opinião foi bem legal, acho que todos os alunos aproveitaram bastante! (Hoje não vou escrever mais por que é meu aniversário de casamento e tenho que dar mais atenção para a esposa se eu quiser chegar no segundo aniversário :D )

Outra coisa, vocês acham úteis estas coletâneas de links que posto de vez em quando?

Tags: , , , , , ,

17 Sep 07 Queima de Estoque! (Livros de grátis, ou quase :D )

Sun Certified Enterprise Arqhitect for J2EE

16092007053.jpg
SCWCD Study Kit

16092007054.jpg
Segurança de Dados Criptografia em Redes de computador

16092007055.jpg
Desenvolvendo Aplicações com UML

16092007056.jpg
Segurança Máxima Para Linux

16092007057.jpg


Estes livros ai de cima estão parados na minha casa, e acredito que não exista probabilidade nenhuma de eu lê-los novamente …
Então achei que seria interessante dar eles para quem va fazer bom uso, só que não acho que valha a pena fazer algum tipo de sorteio, então as regras para quem se interessar pelos livros são as seguintes:

  1. Deixar um comentário aqui dizendo por qual dos livros se interessou
  2. Limite de 1 (um) livro por pessoa
  3. Postar um link em seu próprio blog se o tiver para este post ou para a home do meu blog (prefiro para a home :D )
  4. Esrever 1 tutorial sobre algum assunto atual e me enviar para que seja postado aqui no blog

O primeiro interessado em cada um dos livros que cumprir os itens acima leva o livro, o único custo vai ser o frete (se quiser pegar pessoalmente ai não paga nem isto :D )

Sugestões de assunto para os tutoriais:

  • Ruby
  • Rails
  • Groovy
  • Grails
  • Recursos de integração com a JVM do JRuby
  • Flex + Java
  • Flex + Ruby
  • Wicket
  • Tapestry
  • JSF + JPA + EJB3
  • Escrevendo testes unitários, de integração e de aceitação (em Java ou Ruby)

Estas são só idéias, praticamente qualquer coisa atual relacionada com desenvolvimento, ou melhor ainda com desenvolvimento ágil ta valendo :D

PS.: espero que alguem se interesse pelos livros :D


O melhor curso de Ruby On Rails de porto alegre começa dia 24, ainda da tempo de se inscrever

Tags: , , , ,

16 Sep 07 JRuby + Glassfish = ?

rails.png + glassfish.png

O pessoal do JRuby esta melhorando cada vez mais a integração com o glassfish para facilitar o deployment de aplicações Ruy On Rails no Glassfish, até ai tudo perfeito …
O problema é que tem gente meio maluca por ai, e seguindo esta linha de raciocínio, olha só o que fizeram?
Instale o jRuby normalmente, depois execute os seguintes comandos:

gem install -y rails
gem install -y glassfish
rails testapp
cd testapp
jruby script/server

O que você conseguiu com isto?
A forma mais demorada da face da terra de rodar a sua aplicação Rails no mundo!

Claro que isto pode ter outras vantagens, como rodar os testes exatamente no mesmo ambiente que vai ser colocada em produção, mas sinceramente, alguem tem este tipo de problema com o rails? algo do tipo funcionar no WEBrik e não funcionar no Mongrel por exemplo?

Eu ainda acho muito melhor a alternativa “tradicional” que escrever tudo normalmente usando o WEBrick ou Mongrel para testar, e depois de tudo pronto criar o war com o Goldspike:

script/plugin install http://jruby-extras.rubyforge.org/svn/trunk/rails-integration/plugins/goldspike
rake war:standalone:create

ou então a versão “lite” com o Warble:

gem install warbler
warble
rake war

Bem melhor e não me obriga a ir tomar um café toda vez que eu for rodar a aplicação para testar …

Ajude este amigo que vos escreve na competição de programação “RailsRumble”, basta se registrar e depois votar na minha aplicação (Know Your Client), lembre-se que ela foi desenvolvida em 16h (não eu não fiquei as 48h do concurso na frente do computador)

Tags: , ,

07 Sep 07 Problemas de performance na sua aplicação Java? Ela esta utilizando memória demais? Será que não é culpa sua?

Imagine a seguinte tarefa:
Criar duas telas para um blog, a primeira lista as categorias dos posts, junto com a quantidade de posts de cada categoria, a segunda lista todos os posts de uma categoria, com paginação e por padrão ira mostrar 20 posts por página …
para isto você tem ja pronta a seguinte estrutura:

  • Para persistência esta sendo utilizado JPA
  • Para view esta sendo utilizado JSP puro
  • Para mostrar tabelas esta sendo utilizada a DisplayTag
  • Para simplificar o exemplo, a lógica fica implementada em servlets

Qual é o exemplo padrão para listar os posts de uma categoria com paginação?

Código do servlet:

        Categoria c = entityManager.find(Categoria.class,1);
        request.setAttribute("categoria",c);
        request.setAttribute("posts",c.getPosts());
        request.getRequestDispatcher("/resposta.jsp").forward(request,response);

Código da tabela com paginação:

<h2>${categoria.nome}</h2>
<display:table name="posts" pagesize="10"/>

Isto vai fazer o que foi solicitado, que é mostrar de uma forma paginada, os posts da categoria de id=1 (eu fixei o ID para simplificar o exemplo)

Quais quais os prováveis problemas de performance você já identificou?
Nenhum ainda?
Este tipo de código é bastante comum de se ver por ai, por este tipo de código digo, buscar todos os registros e paginá-los depois …
Inclusive em algumas situações (semana passada), por facilidade eu fiz coisa bem parecida (claro que este é um exemplo simplista, mas não é este o ponto) …

Qual o problema então?
Imagine uma categoria com 100.000 posts …
Cada vez que a página for carregada vai acontecer o seguinte:

  1. Sera feita uma consulta ao banco pela categoria
  2. Quando a propriedade posts for lida, sera feita uma segunda consulta trazendo todos os 100.000 registros para memória
  3. Para cada um dos 100.000 registros, sera criado um objeto (isto ainda adiciona o tempo de criar o objeto e setar as propriedades buscadas dos campos)
  4. os 100.000 registros serão passados para a display tag (ou a sua tag library de paginação de preferência)
  5. a display tag vai renderizar as 10 linhas que estão configuradas e não vai fazer nada com o resto do montão de objetos que foi carregado na memória por preguiça do programador, ou por que simplesmente o cara não sabia como fazer diferente

Ou seja, isto é um desperdício de processamento e memória, que consome tempo do usuário …

Este ciclo todo vai ocorrer novamente quando o usuário pressionar o numero da página desejada também, que vai novamente entulhar a memória de lixo que não vai ser utilizado …

Isto não é uma critica a display tag, e sim aos programadores (eu incluso, pois como comentei fiz parecido em um sistema, e passei dois dias esta semana corrigindo isto).

E como resolver?
Buscar do banco de dados apenas os registros que serão utilizados …
Claro, isto vai requerer no mínimo duas consultas, uma para trazer o conteúdo e outra para trazer a contagem total de registros …
Mas a melhora é visível na performance de acesso a esta tela …

E como implementar isto com display tag?
Tem duas opções:
utilizar os atributos da tag partialList e size (claro que fazendo isto você precisa fazer ordenação externa também se quiser algma coluna ordenavel na tabela) e utilizar o helper da display tag para descobrir qual o primeiro registro a ser mostrado:

   (Integer.parseInt(request.getParameter((new ParamEncoder(tableId).encodeParameterName(TableTagParameters.PARAMETER_PAGE)))) - 1) * pageSize

ou retornar em vez de uma collection uma implementação da interface org.displaytag.pagination.PaginatedList

Mas se você estiver utilizando por exemplo o paginator do tomahawk com JSF então boa sorte pois ele não tem um suporte muito bom para este tipo de coisa …
No caso de JSF+EJB3 acho mais indicado utilizar algo parecido com o p4j5, ou então não utilizar nenhum dos componentes de paginação prontos que eu conheço para JSF :D

Então, vocês escrevem código parecido com isto? (trazer um monte de registros e paginar só na view)
Conhecem gente que faz isto?

Que outras coisas vocês acham que fazem ou que viram fazer (as vezes colocar a culpa nos outros facilita o comentário :D ) que são visivelmente um problema grave de performance quando a aplicação sai do ambiente de testes?
Digo quando sai do ambiente de testes por que mesmo o exemplo citado em um ambiente com poucos dados não apresenta problema algum …

E de quem é a culpa deste tipo de código ser tão comum por ai?
Na minha opinião, é da falsa sensação de programação statefull que temos programando com a grande maior parte dos componentes disponíveis por ai …

Tags: ,

04 Sep 07 Exemplos utilizados no TechWeek (EJB3 + JPA + JSF e Web com Spring Framework)

A página de publicações ja foi atualizada com os exemplos, o passo a passo para fazer o exemplo do mini curso de EJB3 + JPA + JSF funcionar é o seguinte:

  1. Pelo netbeans ou pelo console, iniciar o glassfish
  2. abrir a interface de administração (normalmente http://localhost:4848)
  3. Em resources, adicionar um connection pool com o banco de dados desejado
  4. em resources, adicionar um conection resource apontando para o pool criado e com o nome JNDI utilizado no projeto (jdbc/Teste)
  5. descompactar o ear criado pelo netbeans
  6. abrir o clientes-ejb.jar
  7. remover o arquivo sun-resources.xml
  8. compactar novamente o ear
  9. utilizar a interface web de administração do glassfish para publicar o ear
  10. tudo funcionando

Se quiserem mais detalhes é só dar uma olhada no video a baixo …

Acho que era isto, nos próximos dias eu escrevo outros posts detalhando os exemplos …

Tags: , , ,

03 Sep 07 Palestrante azarado – DevMedia Tech Week (Spring Framework, EJB3 + JPA + JSF)

Como um bom brasileiro, vou começar reclamando para quem não pode fazer nada a respeito :D (Se você também não gosta de lamentações clique aqui)

fiasco.jpg

No aeroporto na sexta a noite, para pegar o avião, o pessoal da esteira encrencou com o meu isqueiro e fizeram com que eu despachasse o mesmo, sem problemas, ainda tinha tempo suficiente, voltei no balcão da Gol, despachei o isqueiro e voltei bem feliz para o avião …
Chegando em Guarulhos, por algum motivo inexplicável em um voo sem escalas de Porto Alegre a São Paulo, eles conseguiram levar mais de 1h para achar o saco lacrado da Gol, dentro do cofre do avião, o que me fez ficar esperando na frente da esteira um bom tempo, até o funcionário da Gol ja tinha desistido, quando fomos para o balcão fazer uma ocorrencia de perda de bagagem (de alguma coisa que eles prometeram que ficaria em um saco lacrado no cofre do avião), chamaram o funcionário da Gol pelo rádio dizendo que haviam localizado o objeto no cofre do avião e que só estavam esperando uma van para mandar (por algum motivo o outro objeto em um saco lacrado igualzinho eles mandaram nos caminhões de bagagens normais).
Depois de hora e pouco de espera fui tentar descobrir qual era o onibus que eu tinha que pegar para ir para o hotel, cheguei no hotel, torcendo para conseguir pagar umas contas que venciam na sexta feira mesmo, e não tinha internet no quarto (fala sério, um hotel em são paulo sem internet, até o hotel mais simples de Pato Branco que fiquei quando estava ministrando um curso la tinha internet nos quartos), tive que jogar mais uma grana fora para pagar 30 minutos de acesso a internet no “cyber office” do hotel, e pior, nem internet nem TV a cabo no hotel, e com isto chegamos ao final da sexta feira …
No sábado começo o dia com a minha palestra fracassada de EJB3 + JPA + JSF, eu consegui passar como fazer tudo na palestra, mas devido a um bug na versão beta do netbeans, não consegui fazer o exemplo funcionar durante a palestra (traduzindo: fiasco!)
No final do dia a minha palestra de desenvolvimento web com spring framework começou mal também, o eclipse Europa (este não é beta e eu uso todos os dias no escritório, só não uso no meu note), resolveu que não queria funcionar, fechou sozinho umas 3 vezes, e quando eu estava começando a entrar em desespero por causa do segundo fracasso eminente no mesmo dia, alguem que estava assistindo a palestra disse: por que tu não usa o IDEA, abri ele e tudo passou a funcionar :D
Mostrei passo a passo (inclusive os testes para ver qual configuração vai funcionar), como fazer uma aplicação web com o spring framework (pelo menos uma das 57 mil maneiras possíveis).



header.png


Pronto, chega de reclamar (“Ó vida, Ó céu, Ó azar”), o que realmente aconteceu no sábado (na sexta foi azar mesmo, eu reclamei para a Gol, reclamei no hotel, ou seja, para quem podia fazer alguma coisa a respeito).

Eu errei feio e peço desculpas pelo “fiasco” do primeiro mini curso, o que aconteceu foi que eu testei antes de ir para o evento com o banco de dados padrão do netbeans/glassfish e tudo funcionou corretamente, no evento tentando utilizar o MySQL como faço em 99% dos outros projetos sofri com um bug na integração do NetBeans 6.0M10 com o glassfish 2.0 build 53 …
Possivelmente o BUG seja alguma alteração no formato dos arquivos de configuração/deployment do glassfish …
O NetBeans quando gera um jar de um projeto ejb, ele coloca dentro do jar um arquivo META-INF/sun-resources.xml que deveria criar os pools JDBC utilizados pelos EJBs daquele jar, mas a combinação de NetBeans 6.0M10 + esta versão de glassfish, isto não funciona de modo algum, e isto eu não tinha testado, pois fiz os testes com um pool que ja existia e desta forma o NetBeans não tentou criar novamente o pool …
Quando eu informo ao netbeans uma conexão nova, ele deveria criar ela automaticamente no servidor de aplicações, mas parece que a geração do arquivo de configurações do glassfish esta com problemas …
o que o netbeans esta gerando é o código a baixo …

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Resource Definitions //EN" "http://www.sun.com/software/appserver/dtds/sun-resources_1_3.dtd">
<resources>
  <jdbc-resource enabled="true" jndi-name="devmedia" object-type="user" pool-name="mysqlPool"/>
  <jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="mysqlPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
    <property name="databaseName" value="devmedia"/>
    <property name="serverName" value=""/>
    <property name="portNumber" value=""/>
    <property name="User" value="root"/>
    <property name="Password" value="admin"/>
  </jdbc-connection-pool>
</resources>

giant-bug-vs-ants.jpg

e o que ele deveria gerar é isto:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Resource Definitions //EN" "http://www.sun.com/software/appserver/dtds/sun-resources_1_3.dtd">
<resources>
  <jdbc-resource enabled="true" jndi-name="devmedia" object-type="user" pool-name="mysqlPool"/>
  <jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="mysqlPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
    <property name="url" value="jdbc:mysql:///devmedia"/>
    <property name="URL" value="jdbc:mysql:///devmedia"/>
    <property name="User" value="root"/>
    <property name="Password" value="admin"/>
  </jdbc-connection-pool>
</resources>

com este código funciona tudo OK …
O que eu fiz em casa que funcionou corretamente?
Tentei rodar o projeto pelo netbeans diversas vezes e não funcionou, então criei o ear pelo netbeans, abri o ear, abri o jar dos EJBs removi o arquivo META-INF/sun-resources.xml, acessei o console de administração do glassfish, criei uma conexão JDBC com as configurações descritas no arquivo acima, criei um JDBC Resource apontando para a conexão criada e nome devmedia.
Fiz o deploy do ear gerado pelo netbeans sem o descritor sun-resources e tudo funcionou (quando tentei fazer o deploy com o descritor ainda no arquivo ele dava o mesmo erro que estava ocorrendo no evento).
Fazendo ainda alguns testes depois, removi a aplicação e os resources JDBC que havia criado no passo anterior, alterei o descritor ao invés de remover ele, e também funcionou.
Por tanto, esta declarado que o problema da aplicação não funcionar foi causado por um BUG no NetBeans que esta criando o descritor de deployment com dados errados.

E a partir de hoje eu vou começar a prestar mais atenção nos avisos que aparecem quando se vai baixar uma versão beta de algum software: Não Utilize em produção!

Ja na última palestra, sobre Desenvolvimento Web com Spring Framework, os problemas começaram com o projetor da sala que só aguentava 800×600 (o da outra sala suportou os 1280×800 do meu notebook, espetacular o projetor), quem é que consegue trabalhar com 800×600?
Depois disto, o eclipse Europa, que não é mais beta, não tinha nada beta instalado, resolveu que iria cair a cada 5 minutos, e considerando o fiasco que eu ja tinha feito na palestra anterior, em que o exemplo não funcionou, eu comecei a ficar desesperado, e agradeço a quem estava na platéia que deve ter visto a minha cara de pânico e disse, por que tu não usa o IDEA?
Abri o IDEA e o pânico aumentou, pois em 800×600 o layout dele não se ajeitava …
Lembrei de remover a barra inferior do KDE e tudo resolvido, IntelliJ IDEA funcionando, consegui fazer o mini curso de desenvolvimento web com spring framework sem maiores problemas …
Os erros que ocorreram eram mais ou menos previstos, pois a idéia era mostrar como fazer uma aplicação do zero, o que pode dar errado, e como procurar soluções …
No final tudo funcionando, clientes sendo cadastrados, layout podre (não sou nenhum designer :D )
O único problema foi que devido aos problemas emocionais do Eclipse Europa, a palestra atrasou um pouco e não deu tempo de passar mais com mais detalhes sobre a escrita de testes unitários (tem alguns exemplos aqui para quem quiser se adiantar), mas vou colocar os testes no exemplo que sera disponibilizado hoje a noite aqui no blog.

Lições aprendidas:

  1. Não utilizar software open source e beta em palestras (e digo open source e beta pois o IDEA que me salvou do fiasco total foi o milestone 2 do IntelliJ IDEA 7
  2. O NetBeans esta ficando muito bom, mas falha de integração com o glassfish que vem junto com ele no pacote de instalação é inaceitável
  3. Praticamente perdi a confiança no eclipse, uma instalação vanilla, feita dois dias antes, em um workspace em branco, resolveu que não iria funcionar e simplesmente fechava sozinho sem explicações
  4. IntelliJ IDEA Rocks, isto prova que vale a pena pagar por uma IDE de qualidade!
  5. Se uma IDE diz que vai fazer uma coisa, ela é obrigada a fazer, se não vai fazer, diz que não faz, como o eclipse e o IDEA fazem, ou seja, nenhum dos dois promete configurar o data source no servidor de aplicações, e nenhum deles se perde se tu configurar manualmente
  6. O Eclipse Europa esta funcionando muito bem na maquina windows que tenho no escritório, sabe-se la por que ele encrencou de não funcionar no linux, sendo que eu utilizava ele a uns 2 meses atrás, antes do Europa Final, ou seja, os betas do Europa funcionavam bem, eu só não esperava este problema ocorrendo com a versão final, como ja disseram nos comentários, provavelmente foi alguma incompatibilidade com a versão da JVM

Fora isto só posso pedir desculpas novamente a quem estava assistindo a palestra de EJB3 + JPA + JSF, e como prometi para todos hoje a noite os exemplos estarão na página de publicações aqui do blog com um passo a passo de como fazer para funcionarem, ainda vou adicionar alguns exemplos de código e um video provando que o netbeans me sabotou na primeira palestra :D

PS.: desculpem pelo texto gigantesco, mas eu tinha muita coisa para explicar …

Tags: , , , , ,

31 Aug 07 Um pouco de tudo e tudo de nada – correndo atrás da máquina

fields.JPGUma das coisas legais de trabalhar com TI é que todo dia tem novidade, uma das coisas ruins de trabalhar com TI é que precisamos pelo menos ter uma idéia sobre tudo o que esta acontecendo …

Então, segue mais um daqueles posts com poucas opiniões e muitos links …

  • Annotated to the bones:
    Parece que o pessoal não aprende mesmo, em vez de diminuir a quantidade de configurações necessárias eles só mudam elas de lugar, mas mesmo assim ja melhora um pouco, a versão 2.0 da especificação do JMX (Java Managenment Extensions) vai suportar a definição de MBeans via anotações como podemos ver neste post.
  • Parece que o JavaFX esta pegando mesmo, ja existem projetos para criação de bibliotecas de componentes para o JavaFX, alem do projeto do compilador que deve diminuir bastante o startup das aplicações em JFX transformando a aplicação em um .class padrão, mas o que eu quero realmente ver, é quando vai estar disponível o Java FX Mobile! por que quanto mais eu apanho pro Java ME, mais eu me convenço que Java ME só serve pra fazer joguinhos.
  • E depois que eu escreve um post sobre Design By Contract, na verdade em um dos comentários postados, fiquei sabendo do Spring DBC (Spring Design By Contract) que é uma biblioteca que facilita a utilização de Design By Contract em projetos que utilizam o Spring Framework, utilizando o AOP dinâmico do Spring Framework em vez de AOP estático do AspectJ, a única coisa que não gostei é que a especificação do “Contrato” é feita no XML, ou seja, longe da classe.
  • A Vingança dos Nerds! não, eu não estou falando daquele filme, estou falando deste post do BizRevolution, um ótimo post de uma “pessoa normal”, dizendo que mesmo os “humanistas” não gostando da idéia, o mundo é dos Nerds :D
  • A ZDnet finalmente revelou quais são os “7 hábitos dos desenvolvedores eficientes“, e sinceramente eu concordo com eles, com estes 7 hábitos, qualquer desenvolvedor se torna mais eficiente do que seria sem eles, os 7 hábitos são:
    • Entender o problema
    • Usar as ferramentas adequadas
    • Focar a simplicidade (foi a melhor tradução para Strive que eu consegui :( )
    • Mantenha o seu código limpo e claro
    • Aprenda a debugar
    • Use o que ja esta disponível (não re-invente a roda)
    • Continue a aprender
  • Ja começou a aprender a usar o Guice? se não começou ainda, ja esta na hora, tem empresas pedindo experiência com o Guice na hora de contratar, faz um tempinho já, mas eu falei um pouco sobre o Guice aqui no blog :D
  • glassfish.pngUm pouco sobre o Glassfish a implementação de referência do Java EE 5 (e um ótimo servidor de aplicações):
  • Sabe aqueles bug reports maravilhosos que ajudam aresolver problemas? se você gosta deles, não permita que seus usuários leiam isto. O Guia de como criar os piores bugs reports possíveis, e pior, baseado em fatos reais.
  • A equipe de desenvolvimento do Eclipse Web Tools ja esta trabalhando na versão 3.0, por enquanto a única alteração é o suporte ao Jetty :D
  • xplogo.gifXP: Melhor em Java ou em Ruby? é um post sobre um TCC falando de metodologias ágeis (no caso XP) comparando o mesmo projeto desenvolvido em Java e em Ruby, o meu único comentário sobre isto é: Ágil não quer dizer apenas entregar a primeira versão rápido (não estou dizendo que este é o caso), acho que as comparações deles valem tanto quanto dizer que delphi é melhor para desenvolvimento ágil do que java por que cria mais rápido uma aplicação Desktop de frontend para bancos de dados :D
  • Finalmente parece que o mercado esta acordando para as metodologias ágeis (tanto de desenvolvimento como de gerenciamento), todos os dias vejo uma noticia nova de mais uma empresa começando a utilizar XP ou SCRUM ou …
    Só espero que não façam a mesma porcaria que fizeram com o RUP que é muito bom, mas todas as empresas que eu conheço que dizem usar RUP usam Waterfall …
  • Java Server Faces

Tags: , , , , , , ,

30 Aug 07 Extra!Extra! Certificação Sun Certified Enterprise Architect 5 (Java EE 5) – e ainda por cima de grátis!

duke_winter.gifA SUN finalmente esta atualizando as provas da certificação SCEA para Java EE 5 (a versão anterior ainda falava de EJB 1.2, na verdade 1.2 e 2.0).
As inscrições para a prova BETA da certificação vão abrir no dia 20 de setembro de 2007.
A vantagem das provas beta é que são gratuitas, a desvantagem é que normalmente elas tem o dobro de questões que a prova normal :D
Mas passando na prova beta, você ganha o certificado sem desenbolsar R$1 …

Mais detalhes sobre o conteúdo da prova podem ser encontrados nesta thread do JaraRanch, mas basicamente é o seguinte:
javasparrow-med.jpg

  1. Application Design Concepts and Principles
  2. Common Architectures
  3. Integration and Messaging
  4. Business Tier Technologies
  5. Web Tier Technologies
  6. Applicability of Java EE Technology
  7. Patterns
  8. Security

Agora não tenho mais desculpas para não fazer a prova :D
Como na prova atual, a SCEA é dividida em 3 partes, uma prova objetiva, o desenvolvimento de uma arquitetura, e perguntas sobre a arquitetura desenvolvida …
Para se registrar, a partir do dia 20 de setembro, acessar o site http://www.2test.com/ e seguir os passos, ou ligar para o centro prometric mais próximo :D

Tags: ,