Thursday, August 28, 2008

Portal Update August 2008

Enjoy this year's last summer edition :-) of the monthly portal summary by Cambridge Technology Partners:
  • SUN: At JavaOne 2008, I attended the session about project SocialSite [PDF] where it was announced. Now it has been officially launched on August 8th: an open source project building Widgets and Web Services that make it easy for you to add social networking features to your existing web applications and therefore portals as well.
    One of the key technology used in SocialSite is Shindig, a reference implementation for the Google-initiated OpenSocial API (now up to v0.8). This API has strong backup from all the major social networks (LinkedIn, MySpace, Plaxo, Ning, SalesForce.com, Hi5, and more), Facebook is not on the list (so far).
    Side remark: SocialSite also belongs to the Glassfish Community.
  • SUN: WebSynergy: As posted in July's portal summary, Liferay and SUN jointly work on the next generation portal technology. On August 1st, this roadmap has been posted which gives some hints about what we can expect.
  • SUN: WebSynergy: On august 28th, Stable Build 2 has been released! The feature list is really impressive:
    - Fully JSR-286 compliant and full tooling support via Portal Pack for Netbeans.
    - WSRP 2.0 consumer feature is integrated in this release (more to come, see more details later)
    - Liferay Portal has been modified to use the Mirage API. This API enables WebSynergy access JCR-compliant repositories.
    - The Roller Blog app provides integration with Roller Weblogger version 4.0. Using this app, portal users can create and manage blogs on a Roller 4.0 server.
    - The Simple API for Workflow (SAW) feature is integrated now. You can use SAW to connect to a business process engine (which is provided through e.g. Java CAPS)
  • SUN: The WSRP Team of WebSynergy has finalized phase 1 of their current integration project and integrated the WSRP 2.0 Consumer into Liferay. This feature allows applications hosted on remote sites (e.g. OpenPortal portlets) to be presented through the Liferay portal desktop. Next step is integrating the producer part. Stay tuned.
  • SUN: Netbeans 6.1: Portal Pack 2.0.1 has been released. It features support for JSR-286 portlets, a visual portlet builder plugin to build JSF portlets and code auto completion for the portlet 1.0/2.0 taglib, just to name a few features.
  • eXo:
    - Aug 11th: eXo has released Portal 2.2: Support of Cometd, extended REST support, support latest Groovy version 1.5.6
    - Aug 15th: eXo has released an "all in one" bundle which includes Portal 2.1
    - No updates regarding WebOS
    Announcements for future releases:
    - With the next portal release in september, GWT applications can be run in the eXo Portal.
  • JBoss:
    - JBoss released JBoss Tools 3.0.0 alpha1 which features initial support for portlets (JSR-168 and JSR-286) including JSF and Seam. A nice guideline has been posted here.
    - They have announced that JBoss Portal 2.7 will be released in september. As indicated in our last month's portal post, Portal 2.7 integrates the new JBoss Portlet container implementing the Portlet 2.0 API (JSR 286).
  • Oracle (BEA): As announced in the strategic webcast beginning of july, the only strategic portal product is Oracle WebCenter Suite. I remember the slides with three columns "strategic", "continue & converge" and "maintenance". BEA WebLogic Portal (WLP), Oracle Portal as well as AquaLogic User Interaction (ALUI) were in the middle column.
    Nonetheless, it was not clear to me that today's WebCenter Suite contains most collaborative components of ALUI already. This I somehow discovered in the official description now. So it seams that ALUI has converged much quicker than WLP (if that is going to be converged at all).
    As far as WLP and Oracle Portal are concerned, they are both not strategic but Oracle currently assures support and product evolution for at least the next 9 years (e.g. upcoming WLP release). Evolution can also be reached through three different integration possibilities with WebCenter Suite: Either through Oracle WebCenter Services, Oracle ECM Services or via remote portlets over WSRP (which means that new applications are developed and deployed to WebCenter and consumed in the legacy portal...).
  • Oracle (BEA): no official details yet about upcoming release of WLP 10.3 yet (Codename Sunshine). Stay tuned.
  • IBM: no updates for August
  • Vendor agnostic:
    - InfoQ has posted Part 1 and Part 2 out of three articles about writing portlets using JSF, Ajax and Seam deployed to JBoss Portal. For a quick intro they are really worth looking at.
    - The OpenPortal community hosted by SUN contains many sub projects where JSF Portlet Bridge is one of those. End of July, they released version 1.2.3 which is a bugfix release for JSF 1.2. It enables JSF applications to run in a Portlet 2.0 container. The bridge fully supports JSR-301 which defines two bridges: JSF 1.2 with Portlet 1.0 container and JSf 1.2 with Portlet 2.0. The reference implementation for JSR-301 is the MyFaces Portlet Bridge. JBoss Portal runs with its own bridge implementation, which is also JSR-301 compliant and integrates well with Seam and AJAX.

Wow, quite a lot for one month!
Cheers,
Balz ... with inputs from CTP Java Fellow Thomas ;-) Messiiiiiiiii

Monday, August 25, 2008

Oracle WebLogic Server 10g R3 Summary [WLS 10.3]

Introduction
Since the acquisition of BEA, Oracle releases BEA's WLS for the first time under the new brand Oracle WebLogic Server. Besides the new technical features discussed in this article, also notice the slightly modified name of the product from "10.3" to "10g R3". The codename of this release remained unchanged: ESSEX.
You can download it from this page.
Under Developer Tools at the bottom of the page, you can download the bundle WLS + Workshop 10.3 (even though the .exe file for Windows is still called server103_win32.exe, nothing about bundle or platform).

New Features

Admin Console
  • On-Demand Deployment:
    So far, internal
    applications like the WebLogic Administration Console, the UDDI and its explorer web app have been deployed at startup time (WLS 10.0).
    Now you can specify that such internal applications are only loaded at first access (on demand).
  • Console Configuration Search:
    You can now search for configuration values across the whole WebLogic Domain.
  • Security:
    Now supports SAML2
  • Spring Console:
    The WebLogic Console has been extended to inspect Spring Beans and manage them. As this feature is bundled as Console Extension, you need to enable it first via the preferences tab in the console (spring-console.jar) or you put the JAR file into the autodeploy folder $BEA_HOME\wlserver_10.3\server\lib\console-ext\autodeploy.
  • Guardian:
    Is now included in the WLS but disabled by default. Enable it via Domain Structure (left menu) and then Oracle Guardian Agent (to the right side)
Core Server
  • JDK 1.6 Support:
    A performance boost of about 10% can be expected compared to JDK 1.5 (which is still supported with this release but not recommended as primary choice)
  • Scripting Support:
    Web container supports multiple scripting languages, such as PHP, Groovy, and Ruby. For more information, see JSR 223: Scripting for the Java Platform.
  • Lightweight Server Runtime:
    WLS 10.3 provides two different runtime configurations: WLS or WLX.
    They are select via JAVA_OPTION -DserverType=“wlx” or "wls".
    BEA announced the "micro Service Architecture ( mSA ) " at BEA World 2006 and it seems that it took 'til now to really bring that architecture approach into their products.
    The default mode is WLS which loads all services internally. If WLX is selected, EJB, JMS and JCA is NOT loaded which results in a much smaller memory footprint as well as some performance boost at startup time.
  • FastSwap:
    The reloading of classes by class loaders (hot swapping, hot loading, hot classloading, hot deployment, etc.) without the need of a full web application redeployment is still not fully solved to satisfy today's developer needs that very often complain about the time wasted waiting for a redeployment.
    While JDK 1.5 brought the hotloading feature already but with certain limitations (works as long as class variables and method signatures have not changed), WLS 10.3 eliminates those to a certain extent:

    Limitations: The following changes are not supported by FastSwap:
    - Changing the list of implemented interfaces or the superclass
    - Changes to the class' annotations (as this is solved via Reflection)
    - Changes of EJB interface methods
    - Changes of Enum based constants
    - Addition or Removal of a finalize method
    - Only available in "Development Mode"
    - In general all Java Reflection based features are not supported by FastSwap (there is a commercial product available that does not have this limitation: Java Rebel 1.0 (might be aquired by Oracle soon ;-)

    Said in a nutshell how FastSwap works:
    If enabled via weblogic-application.xml (configure the item true), there is a agent running in the JVM for each deployed web app which scans the following directories for new classfiles (based on the timestamps):

    earApp/APP-INF/classes
    earApp/webapp/WEB-INF/classes

  • Additional to the EJB3 annotations, the following are supported when Kodo is used as Persistence Provider:

Annotation
Description
@AllowRemoveDuringTransaction
Flag that specifies an instance can be removed during a transaction.
@CallByReference
Flag that specifies the parameters are passed by reference.
@DisableWarnings
Flag that specifies all warning messages are disabled.
@Idempotent
Number of times you want the EJB container to automatically retry a container-managed transaction method that has rolled back.
@JMSClientID
Client ID for the MDB when it connects to a JMS destination. Required for durable subscriptions to JMS topics.
@JNDIName
JNDI name of an actual EJB, resource, or reference available in WebLogic Server.
@MessageDestinationConfiguration
JNDI name of the JMS Connection Factory that a message-driven EJB looks up to create its queues and topics.
@TransactionIsolation
Method-level transaction isolation settings for an EJB.
@TransactionTimeoutSeconds
Timeout for transactions in seconds.

Application Development
  • Spring Security:
    The Spring security (acegi) provides security to a Spring application while providing a rich set of security providers.
    In order to combine JAAS based security providers with your Spring Security features, you can use any authentication provider for performing authentication.
    After successful authentication, WLS principals are converted to Spring GrantedAuthority through a mapper class. After than, Spring Security is performing the authorization phase.

  • Comet, Bayeux Protocol, HTTP Publish Subscribe Server:

    Overview

    Since 10.3, developers of Web 2.0 applications can take advantage of this new feature:
    The HTTP Publish-Subscribe Server allows clients to subscribe to a channel (similar to a topic in JMS) and receive messages as they become available. Behind the scenes, the Bayeux Protocol is used which defines a contract between the client and the server for communicating with asynchronous messages over HTTP. The server-side push technology is called Comet.

    How to use
    Each web application has its own instance of a pub-sub-server so the configuration is on web app level: the web app's weblogic.xml descriptor references the shared Java EE Library of the pub-sub-server and enables it that way. Once enabled, the configuration is done in the weblogic-pubsub.xml.

    Web application developers can optionally use server-side pub-sub APIs in their servlets or Java classes to get the pub-sub server context, manage channels, and manage the incoming and outgoing messages to and from the clients.
    If Ajax clients need to interact with the WebLogic based web application via the pub-sub-server, WLS 10.3 provides a Dojo based java script library that support two out of four transport types: long-polling and callback-polling.

    Scalability:
    Horizontal scalability is solved by clustering. Pub-Sub-Servers are per default using in-memory persistence, are kind of clusterable but isolated. This means that each runs in its own context and is not aware of others (e.g. a chat application does not broadcast the message to all members in the cluster).
    But WLS 10.3 allows you to configure JMS to be the persistence message provider for the pub-sub-server. Configuration details and limitations are documented in the official documentation.

Supported Frameworks
  • Spring 2.0.2
Supported Databases
  • MySQL 5.x
  • Oracle 9,10,11 and Oracle RAC 10g and 11g
  • Pointbase 5.6
  • Sybase 12.5.03 and 15
  • Microsoft SQL Server 2005

Java Standard
Version
Java EE
5.0
JDKs
1.6 and 1.5 (1.6 is 15% faster)
Java EE Enterprise Web Services
1.2, 1.1
Web Services Metadata for the Java Platform
2.0, 1.1
Java API for XML-Based Web Services (JAX-WS)
2.1, 2.0
Java EE EJB
3.0, 2.1, 2.0, and 1.1
Java EE JMS
1.1, 1.0.2b
Java EE JDBC (with third-party drivers)
4.0, 3.0
MS SQL jDriver
1.0
Oracle OCI jDriver
1.0 and some 2.0 features (batching)
Java EE JNDI
1.2
OTS/JTA
1.2 and 1.1
Java EE Servlet
2.5, 2.4, 2.3, and 2.2
Java EE Application Deployment
1.2
Java Authorization Contract for Containers (JACC)
1.1
Java EE JSP
2.1, 2.0, 1.2, and 1.1
RMI/IIOP
1.0
JMX
1.2, 1.0
JavaMail
1.2
JAAS
1.0 Full
Java EE CA
1.5, 1.0
Java EE JSF
1.2, 1.1
Java EE JSTL
1.2, 1.1
JCE
1.4
Java RMI
1.0
JAX-B
2.1, 2.0
JAX-P
1.2, 1.1
JAX-RPC
1.1, 1.0
JAX-R
1.0
SOAP Attachments for Java (SAAJ)
1.3, 1.2
Streaming API for XML (StAX)
1.0
JSR 77: Java EE Management
1.1
JSR 233: Java EE Management
JSR 223: Scripting in the Web Container: PHP, Ruby
1.1
1.0

Web Service Standard
Version
Java EE Web Services
1.2, 1.1
Web Services Metadata for the Java Platform (JWS)
2.0, 1.0
Java API for XML-Based Web Services (JAX-WS)
2.1
SOAP
1.1, 1.2
WSDL
1.1
JAX-RPC
1.1
SOAP Attachments for Java (SAAJ)
1.3, 1.2
WS-Security
1.1, 1.0
WS-Policy
1.2, 1.5
WS-SecurityPolicy
1.2
WS-PolicyAttachment
1.0
WS-Addressing
1.0, 2004/08 member submission
WS-ReliableMessaging
1.1, 1.0
WS-Trust
1.3
WS-SecureConversation
1.3
UDDI
2.0
JAX-R
1.0
JAX-B
2.1, 2.0
SAML
2.0
SAML Token Profile
1.1


Other Standard
Version
SSL
v3
X.509
v3
LDAP
v3
TLS
v1
HTTP
1.1
SNMP
SNMPv1, SNMPv2, SNMPv3
xTensible Access Control Markup Language (XACML)
2.0
Partial implementation of Core and Hierarchical Role Based Access Control (RBAC) Profile of XACML
2.0
SAML
1.1, 2.0
Data Direct database drivers
3.7

Friday, August 15, 2008

Top 10 Java Development Tools at Cambridge Technology Partners

Even though Top 10 lists have nearly become commodity in the web, we thought it might be interesting for some readers what tools we use at CTP, Cambridge Technology Partners, when being on projects at our clients.
To launch a series of Top 10 posts, we started by compiling the Top 10 Java Tools!

Enjoy:
  • Eclipse:
    Since years we would say that Eclipse is the number one Java IDE tool around. But since JavaOne 2006 we consider NetBeans to be a very strong competitor to Eclipse. It seems that the NetBeans Team is adopting new standards more quickly and since release 6.0 more than a reason to reconsider NetBeans as primary tool as IDE. Let's see how the next Eclipse compares to NetBeans 6.5 (which has been released as Beta).
  • Maven:
    Getting recently popular with EJB3, the convention over configuration principle has already been incorporated by Maven for years now. Compared to build tools like Ant, Maven defines a model of your project and makes you think much more about your application's modules. Maven comes with many plugins, delivering functionality out of the box: Creating build artifacts, creating reports on code metrics and even deploy applications to an application server. The recently improved Eclipse integration by Sonatype makes using Maven with Eclipse a real pleasure!
  • Subversion:
    Although CVS is the most used source repository tool at our customers, trends clearly indicate the transition towards Subversion. It was designed as a "better CVS", having all features of its archetype but getting rid of various quirks (working with folders is quite a nightmare with CVS). All in all, Subversion fulfills the needs of enterprise version control and allows us efficient developer collaboration.
  • Hudson:
    Initially started as a small build helper by Java rock star Kohsuke Kawaguchi, Hudson has outrun the de facto continuous integration standard Cruise Control by far. It provides a decent web interface for configuration as well as a great feature set like distributed builds and statistics. Recent versions also included a plugin manager.
    PS: It is worth reading the Secrets of Rock Star Programmers interview with Kohsuke in chapter 8.
  • JIRA:
    There are free bug and issue tracking tools around, we know! But, all of them can not be compared (by far) with the feature richness of JIRA. In any case we strongly recommend JIRA. And by the way: We anyway consider Atlassian as a very cool company with high quality products like Confluence, Bamboo, Clover and FishEye... and they also sponsored the beer at this year's JavaOne at the JavaPosse BOF ;-) hickz. Thanks Atlassian!!
  • Wiki:
    The days where people create documents (word, openoffice) have definitely gone! Realtime collaboration and central availability is key for the success of every kind of documentation work. We usually use it in projects at customers as central point of project documentation (most of our customers luckily already have a wiki) and above all as internal knowledge pool at Cambridge Technology Partners for technology summaries and guidelines. Having excellent and up-to-date summaries of certain topics (e.g. EJB3, or a summary of books like "Effective Java") helps us dramatically in supporting junior consultant that start at CTP.
  • Oracle XE:
    As most customers use Oracle we think that even developers should work with Oracle locally. Therefore, Oracle XE is the best choice to create a local environment that is as close as possible to customer environments.
  • VisualVM:
    As a bundling of a number of JDK tools like JConsole, JStack and JInfo, combined with several new and advanced profiling capabilities, VisualVM comes in very handy when quickly profiling an application. It is included in the latest JDK 6 and has a plugin manager which easily allows third party plugin integration (e.g. a GlassFish plugin).
  • Putty:
    The smallest and fastest console tool ever.
  • JAD [JAva Decompiler]:
    JAD has proven to be the last resort when dealing with strange effects in third party closed source code, or when documentation is just not complete. The decompiler is available for all the major platforms and also integrates easily into Eclipse.

So that's the Top 10, besides many other cool tools of course ;-)
If you like our selection, you might consider to start or continue your carreer at Cambridge Technology Partners in Zurich and Geneva, because we HIRE !! Here a summary of profiles we are currently looking for:
  • Java Geek
  • Java Guru
  • Java Queen
  • Java Dude
  • Java Princess (Junior Queen)
  • in general: Developers and Architects, for the full list please visit our homepage.

Monday, August 4, 2008

Portal Update July 2008

Welcome back to the monthly portal summary post by Cambridge Technology Partners.
Enjoy the July edition:
  • SUN: Both WebSynergy and Liferay Portal now share an identical Portlet Container
  • Liferay: Liferay has released Liferay Portal 5.1.0
    Main improvements can be read here, worth mentioning is the bundling with Glassfish v2 & v3 (!),
  • eXo: Portlet Container 2.0 and Portal 2.1 have been released!
    An excellent summary has been posted by InfoQ about the first portal offering to provide full support - consumer and provider - of the new Java Portlet 2.0 API (JSR 286) and Web Service Remote Portlet 2.0 (WSRP 2.0).
    It also nicely summarizes the rich feature set of the eXo JCR (JSR-170 compliant)
  • eXo: WebOS:
    A revolutionary portal user experience is demonstrated with their WebOS product
  • JBoss: JBoss Portal version 2.7.0 beta has been released which integrates the new
    Portlet container implementing the Portlet 2.0 API (JSR 286).
  • Oracle (BEA), IBM: no updates in July