Brian Moelk writes:
Quote
>If you have to use EJBs, it is going to require a lot of tuning on and of
>the App Servers, and you had better be using the newer standards (2.1 and
>above) with a mix of local EJBs. If an orgranization can facilitate
>mixing local and remote EJBs, they wil be much better off. If they can
>avoid EJBs (especially CMP Entity Beans), they will be even better off.
IMO, J2EE w/out EJB is not anything special and CMP is the holy grail so
to
speak. JSP/Servlets are an improvement over ASP and PHP, but ASP.NET
raises the bar quite a bit.
>The App Server providers (such as BEA, IBM, etc), want and desire more
>dependence upon EJBs primarily for three reasons (1) High cost and great
>revenue stream, (2) More license cost for more servers to handle
>increased CPU and server load, and (3)Lock into vendors for repeat sales
>in
upgrades,
>new sales, etc.
Exactly; 3 is a key point; vendor lockin happens in the java world too.
In the App Server realm to some degree, it is true, but in actuality, it is
more of a perception problem.
EJBs, themselves, do not lock you in (the code for BEA is the same as it is
for BES, Web Sphere, etc), but the deployment descriptors are different. It
is a perception thing, that we cannot change because of X. In reality, it
is relatively simple to do, if you use a non specific IDE, like JBuilder,
or Net Beans, for example.
Quote
>EJBs have been vastly overhyped, IMHO. If used when needed and sparingly,
it
>can be successful. If used as a cure all for distributed application
>support, it can be nightmarish in terms of performance.
It's still hard for me to justify their use.
Well they are useful if you are going across server boundaries, where you
are not running in the same JVM.
For example, if you have an application that originally host 1000 users, but
you need to add another server, how would you run the object pool across
several servers, which do not share the same JVM? Answer is either (1) RMI,
(2) Web Services, (3) Servlets.
The problem with # 3, is the typecating of those objects. You have to be
able to get a reference to the originating object, but unless you have the
same libs on both machines, using the same JVM (or a compatible version),
then you could have problems. EJBs rectifies this problem, by containing
the reference in a RMI/IIOP relationship (similar to Corba solution). By
calling the referenced EJB through RMI/IIOP relationship, you ensure that
the Context in which the object is instantiated, is the object you will
recieve back.
You can use RMI instead, but then your code base becomes much more complex
and reuse becomes a more rigid exercise.
That is the real reason for using EJBs, multi-server environments, where
scalability and reuse becomes the issue. I have no problem with this
approach, when it makes the most sense. However, care must be taken to make
sure that the remote calls and methods are minimized. One way to do this,
is to use SessionBeans and use either BMP Entity Beans, and/or/better,
local Entity beans.
In other words, if I use a Session Bean to call routines on the remote
server(s), then I could invoke the Entity Beans in the local context. That
means that the need to serialize and remote the object, becomes nil.
SessionBeans (which do not have to retain state and container persistence),
greatly reduces overhead. If you code carefully using SessionBeans, you can
greatly reduce overhead and speed up transaction times, yet retain the
remote benefits. I have not witnessed hwoever, many companies following
this pattern. To be fair to them however, EJB 2.0 is pretty new and many
probably have not upgraded their architecture nor app servers to take
advantage of these newer methodologies.
Web Services hold great potential, especially as it matures and if they do
not fragement into a MS only version verses the rest of the world.
Quote
[...]
>Yes, and what many Delphites fail to understand, that despite some of the
>shortcomings of J2EE (primarily bad application design by the
>development team, not Javasoft, BTW.), it is still the best route to get
>there in Enterprise and Web application development.
I disagree; I don't think J2EE is the "best route" and the promise of J2EE
IMO has been greatly underdelivered. The best route really depends on
many
factors. If I were developing a web app on *nix I would consider two options:
J2EE or PHP. On windows it is either .NET or a combination of Delphi
technologies. Requirements determine the best solution, not technology.
You are thinking Web as in JSP/Servlets only. There are many other concerns
involved, like wrapping legacy code and controlling Objects and/or
repositories that do not fit well in the Internet/Intranet browser based
type application. I have not seen anything to date, that works as well as
Java in the Enterprise overall. With 75% of Enterprises planning to stick
with Java, my opinion does not seem to be an isloated one<G>.
PHP is nice for smaller comapnies or Web Sites, but the MVC architecture is
not inherent in PHP. They are moving in that direction, but they are not
there yet. What you have with PHP is more of a intermingling with HTML and
Server side code. That makes reuse very hard to maintain and makes web site
upgrades, hard to obtain.
There are always certain situations and demands where Java may not be the
best fit. Of course my statement and intent refers to an overall solution
solving paradigm, not a one size fits all type situation.
Overall I think J2EE and EJBs become one and the same in the eyes of the IT
staff. Realistically they are not, though usually J2EE means EJBs, at least
in the corporate IT world.
Quote
>One of these days Delphites will learn XPlatform is VERY IMPORTANT in the
>Enterprise and to serve Enterrpise customers.
It's important to *some* customers, not all. Most companies have
combinations of Windows and *nix.
Precisely, and most large Enterprises also have OS390 Mainframes, as well as
other specialty OSes and devices. The problem realm has always been
seamless integration and interaction across all platforms and boundaries.
What solves this problem better than Java?
Quote
>They are NOT GOING TO run
>their mission critical systems on Windows, no matter how much you might
>believe otherwise (does not apply to you, BTW, Brian).
I agree that many want to run their systems on *nix, but IMO what is
ironic is that these systems don't necessarily outperform (cost, speed,
throughput, etc) Windows based systems.
Linux has been shown to outperform Windows on many types of operations (see
Oracle's latest benchmarks, as well as IBMs). Linux is a much lower cost
for Enterprises than Windows. The problem with the TCO Microsoft sponsered
reprots is that they believe that the user and network engineering firms
have no knowledge of Unix. As you alluded to earlier (a mixed envrionment),
we know that is not the case.
Quote
>Oracle, IBM, SAP,
>Peoplesoft, and CA ar the most predominent Enterprise players, and they
use
>and recommend Linux, AIX, Solaris, and Big Iron, not Windows. These major
>players also highly committed to Java based solutions.
And *all* of those companies have products that run on Windows. I would be
interested in knowing what percentage of their revenue come from Windows
based products or deployments. Not saying that it would be a majority,
but it would be interesting nonetheless.
Agreed, and I do believe IBM publishes something like this. The point is,
however that neither Oracle nor IBM, nor SAP recommend Windows servers for
their products. They do recommend gheavily these days, Linux or Big Iron. I
do not think most Enterprises are going to pay thousands to hundreds of
thosuands of dollars for the Enterprise wise solutions and then go against
the solution providers recommendations <G>.
ture (real or perceived).
Quote
In general, I agree (except that Kylix isn't officially discontinued <g>).
The ironic thing is that many of those Enterprises only run Solaris or
only
run BEA or IBM, etc. They *are* locked into a vendor, and they actually
pay more for the perceived freedom of vendor-independence than if they
just used Windows in the first place.
Well if that were the current case, I might agree. BEA and IBM Web Sphere
however have more pressing things to worry about in the App Server space.
JBoss is now the most widely used App Server ( beating out IBM and BEA) and
it's cost is like the Linux cost, free (as in beer, not in speech). JBoss
now can be J2EE certified as well.
Sun offers a free version of Sun One and if you buy a Sparc or AMD/Intel
Server from Sun, you can get a free Sun One App Server, already setup and
to some degree, optimized for that server.
If you want to buy support, of course, it is available. But buying support
for Linux and JBoss combined, is much less than Windows licenses in a
large server environment.
Quote
>Personally I feel Borland's real chance to make Delphi a real player in
the
>market, has come and gone about 5-6 years ago. I am not speaking Desktop
>wise on Windows, mind you, but as an Enterprise wide solution.
I agree, Borland is too small to push a broadly adopted platform anyway.
They are a niche player; but there is IMO a lot more they can do and can
continue to do.
Of course, Borland can by making the moves that they now are. Borland has an
agressive Java strategy, an xplatform C/C++ strategy, and a NET strategy.
This is what they should do; -- go with the market solutions and implement
those markets better than anyone else by coming up with winning IDEs and
architecture that makes any/all easier to use.
Quote
>It makes much more sense to bet on a platform that is not dependent upon
>a single source, is widely supported by the industry, and has penetrated
>the entire IT space.
Who's betting? The users of the system? The consultants the build on
them?
The vendors that produce products for the platform? It really depends,
there are no clear cut answers. FMPOV, users don't care, they just want
something that works. In my experience and from what I gather this survey
shows about J2EE, I believe there is large room for improvement.
I agree users do not care, but IT departments do, because of training,
staffing, maintenance and upgrade issues. I certainly agree there is always
room for improvement. However, each major release of Java gets better, as
usually does each subsequent release from MS, Borland, Oracle, IBM, C, etc.
I would be willing to bet that most of these firms interviewed are relying
too heavily on EJBs and not structuring their Enterprise apps correctly. I
think they admitted to such.
Any of us who have done 'n tiered programming' know it takes much more
timing and planning than a traditonal two tiered approach or more than a
real 3 tiered approach (aka, Client on Workstations, server side processing
on a middle tier, and a Database tier on another server farm). That is true
whether we are working with MS based solutions, Java based ones, or some
other type of n tiered architecture, like Corba.
I do think that as grid computing becomes more popular, many of these
concerns and performance degrading options will become less and the
application tiers will become more manageable. Once a plethora of servers
really do work as one (and we can plug and play server farms as easily as
adding hardware to a PC), many of the n tiered problems become much less in
complexity and state/persistent management.
Have a great evening Brian. Always a pleasure.