I've recently came across an article on Sitepoint.com, describing the new features of the next release of Visual Studio.NET and the next generation .NET tools and technologies. To my great surprise, it's mostly stuff that we already have in WebLogic Workshop-land!
From time to time everyone feels that the grass is greener on the other side of the fence. Especially after debugging some weird issue well into the morning...
Since most of us have to spend our working days focusing on our own platform of choice, we don't get exposed to the realities and the day-to-day experince of working on other platforms. Obviously we can't avoid getting exposed to the marketing material and their praise of the productivity and the breadth of features for the .NET platform. Microsoft has not spared any ammunition on the tool development and marketing front, so Java/J2EE developers do tend to be on the defensive side when comparing the productivity of the tools for the two platforms.
So that's why it was such a blast to realize that most of the new features highlighted in the SitePoint.com article are present and available in my current platform and development environment! I will list the features described in the article, and I will describe what we have in the current released version of the BEA Platform and the Workshop development environment.
I guess there are a number of available packages to handle the separation of page layout and page content, even in .NET, but I can see why it is significant to have this in the base framework. We Workshop developers have this for a while now - it's the netui-template tag library, which is based on the Struts template tags. It's integrated with the rest of the framework, and the IDE knows about the templating system, so it can work out the look of the page on the WYSIWYG JSP editing view.
If you're not using Workshop, a great alternative is the Tiles framework which is shipped with Struts. I am planning to write an article about it later. In the alternate reality of WebWork-fans, SiteMesh is the framework of choice for similar tasks.
Well, anyone who ever needed to deliver a Platform 8.1-based Portal application knows that BEA delivered the most elaborate and configurable themeing/skin solution ever. I won't even attempt to describe the details: it's enough to know that not only you can configure every aspect of the whole portal's look and feel, but you can configure the rendering and the style on the portlet level. Every detail is configurable for the Portal skin developer, including the way the system renders the borders, controls, navigation elements. And you don't just edit a style sheet - you get access to an object model throughout the rendering cycle. It is a complex solution - maybe we should write a book about it and get rich :-)
This is how Sitepoint describes this new feature:
“ASP.NET 2.0 introduces new controls to help build access control. The Login control is a one-stop solution for building a login form. The control comes complete with persistence support, meaning that the handy "Remember Me" functionality is handled for you.”
The user management, authentication, authorization, and User profile related issues are fully realized in the WebLogic Platform. There is a very convenient LoginControl that handles login and logout. User profile, authentication, and authorization settings can be stored in the built-in LDAP server, an external LDAP server, or in the database store.
The Sitepoint article describes the API to access a web site user's profile information. The features described there are all available in the WebLogic Plaform. There's also the benefit of the Unified User Profile API. Developers can pull profile information from multiple sources, and see them as a unified storage and API. See this nice article about the possibilities of UUP. Using a WebLogic 8.1 Portal, developers can leverage a very flexible rule-based engine to customize and filter the content of the Portal site, based on dynamic business rules.
On the WebLogic Platform, they call it a "multichannel framework", but the concepts are the same. The framework provides a mechanism to distinguish between client devices using the User Agent parameters, and portal developers can assign "Classifications" for a group of devices. These classifications will decide which skin will render the content for the device, but this would be not enough to handle the significantly different requirements of each device. To handle this, custom portlets can be selected for each device, and developers can use the provided JSP tag library to write custom JSP fragments for each classification group. The classification property can be also used to trigger personalization and customization rules in the dynamic rule engine.
There are many benefits and shortcomings of every serious IDE for enterprise development. The current release of the WebLogic Workshop is I'd say more geared for the web developer than for the back-end developer, altough you can design EJB components and Java Controls with it. The good news is that the architects and the EJB developers can still use any other existing Java development tool to prepare EJBs for example, and the Web Developer can import the existing packages in his workspace. But I'd definitely welcome some focus on the business and infrastructure development from the BEA Workshop team. I think web developers have enough features to play with, so BEA could focus on the other guys in a typical enterprise development team. For example the developer creating Controls should have basic refactoring features within the IDE, as there's no easy and convenient way to develop Controls outside the environment.
The Sitepoint article closes the feature list with a paragraph on Indigo, the .NET platform's new infrastructure for "Service Oriented Architectures". I have quite a few thoughts on the current SOA craze, but that's a topic for a different article. As for the platform, BEA provides components such as a very strong Workflow engine, the Web Service stack, the JCA API, and the Controls API that could be the basis of such an architecture. There's also a 3rd party component, the Collaxa server application, which is a very strong match for some of the features of Indigo. If you search for "WebLogic SOA" on Google, you'll see that BEA scores high on the buzzword bingo when it comes to SOA adoption.
There are some additional important features coming for .NET developers. One important tool is the ObjectSpaces framework, which handles object persistence and relational-object mapping for .NET applications. Most Java developers take advantage of Entity Beans, or JDO frameworks, or frameworks like Hibernate to handle object persistence. Microsoft developers typically rely on working with raw RecordSets, or use their own Data Access Layer to manage these mappings. Java developers have a great advantage to have this set of mature, evolved, battle-tested options.
When it comes down to existing, ready-to-deploy platforms for Enterprise Development, the frameworks and tools available for Java Developers are extremely powerful. In case of the WebLogic Platform, there's a convenient and integrated way to leverage these frameworks, using the WebLogic Workshop IDE. Just by matching the features against what .NET developers will get later with the next major revision of the tools and frameworks of .NET, I think we still have the advantage, and the WebLogic Platform is already available now. Since the Workshop integrated development environment is a fairly new product, some features are still missing for serious enterprise developers, and the performance of the IDE and the build/deployment process could be better. Meanwhile, thanks to the open nature of the Java platform, other tools can be used alongside the Workshop IDE to equip teams for productive J2EE development.