The Artima Developer Community
Sponsored Link

Java Community News
Reengineering Java EE Servers

9 replies on 1 page. Most recent reply: Nov 28, 2007 6:49 AM by Gregg Wonderly

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 9 replies on 1 page
Frank Sommers

Posts: 2642
Nickname: fsommers
Registered: Jan, 2002

Reengineering Java EE Servers Posted: Nov 8, 2007 1:31 PM
Reply to this message Reply
Summary
In a recent IEEE Distributed Systems Online article, Takoua Abdellatif and Jakub Kornas describe techniques to re-engineer existing Java EE servers for failover and dynamic configuration capabilities. In the article, they also introduce the Fractal component model, and the relevance of OSGi to Java EE.
Advertisement

Many Java EE server projects started at the inception of the enterprise Java specifications many years ago. Such earlier-generation systems were not always constructed with a dynamic environment and clustering in mind. A recent article by Takoua Abdellatif and Jakub Kornas, Reengineering J2EE Servers for Automated Management in Distributed Environments, describes some techniques in which Java EE servers can be made more dynamic and scalable. Their approach to enabling existing servers with scalability and dynamic behavior consists of multiple steps:

First, we need to be able to manage service dependencies. This means that the application server’s architecture must be explicit and the relations between services well defined and exposed to the administrator.

Second, the services must be packaged and deployed independently. The unit of deployment should be the service, not the whole server. Once deployed, a distinct class loader should load each service’s code to allow for service updates and versioning.

Finally, the deployment tools should hide the distributed system’s complexity and automate configuration and installation.

To address these needs, our approach reengineers the legacy system to have an explicit, modular architecture and builds a deployment and reconfiguration system based on sound design principles and using higher-level system representation. So, we use the architecture-based management principle, which separates the management layer from the managed system.

One of the interesting aspects of the article is the authors' description of the Fractal component model:

Fractal is a general component model that distinguishes two types of components: primitive and composite. Primitive components are standard Java classes that conform to certain coding conventions. Composite components encapsulate a group of primitive or composite components. The system architecture, written in the Fractal ADL, is expressed in terms of the component model—bindings between components and containment relationships. Bindings between components can be local (in a single Java Virtual Machine) or remote. These properties are specific to Fractal, which is why we chose it to build our new application server.

What do you think of the authors' approach as outlined in the article?


Dale Asberry

Posts: 161
Nickname: bozomind
Registered: Mar, 2004

Re: Reengineering Java EE Servers Posted: Nov 9, 2007 8:49 AM
Reply to this message Reply
Sounds very much like Jini.

Gregg Wonderly

Posts: 317
Nickname: greggwon
Registered: Apr, 2003

Re: Reengineering Java EE Servers Posted: Nov 9, 2007 1:02 PM
Reply to this message Reply

Server configuration in distributed environments is tedious and error prone, because different server parameters—such as ports, IP addresses, and Java Naming and Directory Interface (JNDI) addresses—must be set consistently. J2EE server administrators generally adopt ad hoc and script-based tools for configuration and deployment, but these tools can introduce many errors during deployment and execution. Indeed, configuration and deployment are the main sources of failure in Internet services.


This statement more or less details the whole idea behind Jini's lookup service and using type based service discovery. It really is interesting how many people still don't know about the power of the Jini (http://incubator.apache.org/projects/river.html and various projects at http://jini.dev.java.net) platform.

Jini provides, today, all of these things which J2EE needs, and which OSGI is trying to figure out how to do for distributed systems as they've done for inmemory container/deployment.

Cameron Purdy

Posts: 186
Nickname: cpurdy
Registered: Dec, 2004

Re: Reengineering Java EE Servers Posted: Nov 12, 2007 11:26 PM
Reply to this message Reply
Greg,

In that case, we must ponder why everyone doesn't just use JINI. I can only come up with three possible explanations:

1) People have an irrational dislike of JINI and so they avoid it despite it being free and providing what they need. This does seem unlikely, since there must be some individuals out there who would overlook their dislike in order to profit wildly.

2) Somehow the industry is completely unaware of what JINI can do for them, so they invented other stuff instead. This also seems unlikely, since in the long term such valuable information would be hard to suppress.

3) It's not quite as appropriate and/or up-to-the-task and/or easy-to-use as indicated. This seems the simplest possible explanation that is consistent with the evidence.

OSGi has already solved a number of problems described by the article, and done at least a passable job of it. If you look at the work from Paremus, they mounted OSGi on top of JINI, so it seems that JINI didn't actually do what they needed in these respects, and OSGi did. I'd be curious about their spin on this.

Peace,

Cameron Purdy | Oracle
http://www.oracle.com/technology/products/coherence/index.html

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Reengineering Java EE Servers Posted: Nov 13, 2007 9:25 AM
Reply to this message Reply
> 1) People have an irrational dislike of JINI and so they
> avoid it despite it being free and providing what they
> need.

A lot of people pronounce JINI kind of like "Jenny". Given that Jennifer is such a common name it's statistically likely that a given person will have some emotional association with it. Given that we are talking about geeks, this is mostly like an experience of rejection by a female love interest.

Q.E.D.

Gregg Wonderly

Posts: 317
Nickname: greggwon
Registered: Apr, 2003

Re: Reengineering Java EE Servers Posted: Nov 13, 2007 12:24 PM
Reply to this message Reply
> In that case, we must ponder why everyone doesn't just use
> JINI. I can only come up with three possible
> explanations:

Hi Cameron, thanks for jumping in!

> 1) People have an irrational dislike of JINI and so they
> avoid it despite it being free and providing what they
> need. This does seem unlikely, since there must be some
> individuals out there who would overlook their dislike in
> order to profit wildly.

I think that there have been some personal exchanges that have put some people in this group.

> 2) Somehow the industry is completely unaware of what JINI
> can do for them, so they invented other stuff instead.
> This also seems unlikely, since in the long term such
> valuable information would be hard to suppress.

Largely this is the point that I think makes the most sense of the three. People do know of the word Jini. What they don't know is how to use it. More on the point below.

> 3) It's not quite as appropriate and/or up-to-the-task
> and/or easy-to-use as indicated. This seems the simplest
> possible explanation that is consistent with the
> evidence.

My experience with the community, over the years, has taught me that people largely want something more than what Sun's original JTSK packaging provided. Because of J2EE and because of many other "container" systems, they didn't understand how to use a "toolkit" (the JTSK in particular) for building distributed systems.

Jini is not a container, it is a specification. Sun Licensing didn't allow others to freely build competing implementations. Key Sun management did not have any desire to use Jini because it was a "technology" thing, or because it was not a J2EE thing. I've been privy to a number of internal Sun discussions as part of the Sun developer advisory council. Sun is using Jini internally. A lot of people are using Jini internally and not talking about it. Some of the things I hear from such people is, "Jini is easy enough to use, that I don't want my competition to know how that could be more competative with me."

> OSGi has already solved a number of problems described by
> the article, and done at least a passable job of it. If
> you look at the work from Paremus, they mounted OSGi on
> top of JINI, so it seems that JINI didn't actually do what
> they needed in these respects, and OSGi did. I'd be
> curious about their spin on this.

Passable jobs are often good enough. OSGi's success has largely been led through its use and support by Eclipse, from my perspective. I think that at the point that OSGi was started, the Jini specification and the JTSK did not supply all the answers. Today, it is closer by a long shot, due to the 2.x changes for security and improvements in Javaspaces performance through batching. Because it isn't arbitrary, application specific code, it can be beat by benchmarks from other more vertically focused software, perhaps.

I use the Java mobile code model in lots of interesting ways through smart proxies. I hope to get a talk accepted at JavaOne this year that is about building a synchronized distributed system that is loosly coupled. It takes full advantage of a number of Java features, and really shows off how mobile code, smart proxies and other Java things provide the real power to make Jini a solution toolset.

Gregg Wonderly

Posts: 317
Nickname: greggwon
Registered: Apr, 2003

Re: Reengineering Java EE Servers Posted: Nov 14, 2007 12:53 PM
Reply to this message Reply
> > 1) People have an irrational dislike of JINI and so
> they
> > avoid it despite it being free and providing what they
> > need.
>
> A lot of people pronounce JINI kind of like "Jenny".
> Given that Jennifer is such a common name it's
> s statistically likely that a given person will have some
> emotional association with it. Given that we are talking
> about geeks, this is mostly like an experience of
> rejection by a female love interest.

I suppose that it is possible for such things to be a factor but I suspect that you are just joking.

What I suspect, is that a majority of people just don't have enough practical experience using RMI or other remote communications technologies/techniques to understand how to put together all the things that they need to, to be successful. Many of the messages on jini-users and javaspaces-users indicate this quite readily. No telling how many never even post questions.

There are times when I still find remote calls sneaking into synchronized blocks and creating deadlock.

Don't get me wrong, I don't think that any thing is perfect about what exists today. But, I think that it is really not beneficial to anyone for everyone to just go someplace else and silently reinvent technologies with minor differences just to fix small issues that can be addressed if they just participated in the associated development community.

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Reengineering Java EE Servers Posted: Nov 16, 2007 10:45 AM
Reply to this message Reply
> I suppose that it is possible for such things to be a
> factor but I suspect that you are just joking.

I was absolutely just joking. I have no dog in this fight. Apparently I'm the only person that thinks I am funny.

Raoul Duke

Posts: 127
Nickname: raoulduke
Registered: Apr, 2006

Re: Reengineering Java EE Servers Posted: Nov 27, 2007 2:03 PM
Reply to this message Reply
> Sounds very much like Jini.

Elang/OTP too, perhaps?

(at some point of abstraction everything looks the same, and i don't really know either JINI or Erlang/OTP particularly well, so i might be wrong - but it seems like the decoupled component approach has several proofs in the world of it actually being useful.)

Gregg Wonderly

Posts: 317
Nickname: greggwon
Registered: Apr, 2003

Re: Reengineering Java EE Servers Posted: Nov 28, 2007 6:49 AM
Reply to this message Reply
The main issue is that Java EE is a Java technology, as is Jini. So, it doesn't make a lot of sense to redesign a Java based solution for something where a technology already exists.

For Erlang vs Java, it's clear that a different implementation with different features can exist. For interworking between languages, there might be a common endpoint implementation using a technology such as XML, or something similar.

Jini really does provide the key technologies for Java based distributed systems. There are other Java based technologies that people keep rolling on their own because they don't know about Jini, or perhaps because of the licensing of the past.

Now that it is Apache v2.0 licensed (the spec) and Sun's contributed implementation (the JTSK), is now an apache podling under the name "River", it seems silly to not take what is there and exploit it for Java based systems.

Flat View: This topic has 9 replies on 1 page
Topic: Jeff Atwood on Pair Programming vs. Code Reviews Previous Topic   Next Topic Topic: Landon Fuller Ports OpenJDK 6 to OS X

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use