Zope versus J2EE
9 Oct 2003Introduction
First of all, I like both platforms (ZOPE, J2EE) and both languages (Python, Java) very much. I do not prefer one above the other. The goal of this comparison is not to select the "best one", the goal is to highlight some of the differences in order to get an indication about which platform is better suited for which task.
General Comparison
ZOPE
- Fast, interactive development. Relatively simple applications can be developed very fast because you can have a quick feedback of the results. As mentioned before, this is an advantage for simple applications, it can become a disadvantage for larger scale applications. J2EE development tends to be more off-line, you need to deploy the application or restart the application server to try out new versions.
- Availability of prepackaged functionality called "Products". There are some interesting products out there, some of them can be used immediately, others can be used as a starting point for your own custom development. I did not find as much J2EE bean based snippets.
- Clean, simple concepts. Everything is based on a number of easy to understand concepts: The ZODB object database, the acquisition, ...
- Flexible, it allows some on-line tweaking. Small changes can be performed on-line without having to redeploy the application. This reduces development time.
- Web based administration.
J2EE
- Performance is better.
- Java has more provisions to structure large applications. The grouping of classes and other resources into jars, wars and ears give you better control about which parts are forming the application.
- Large demanding applications.
- Connections to legacy applications.
- Distributed transactions across a number of different data sources, different in nature and different in identity.
Application Server Comparison
ZOPE
- You can "touch" the objects at run-time.
- Web based development and management.
J2EE
- Tend to be very robust.
Language Comparison
Language comparisons are always difficult. From a theoretical point of view, both languages are equivalent to a Turing machine, and are equivalent to each other. So both languages can express the same: all computable functions. So the discussion is always subjective. I will not compare the languages thoroughly, I will only highlight the major differences as perceived by me.
PYTHON
- Simple.
- Grown over time. Danger of feature creep. On the other hand, the language can still evolve. So new handy constructs can still be introduced in the language. Features that are unused can be removed.
- Open source.
JAVA
- Sophisticated, well designed Some features are better thought out: security is integrated in the VM, class loader availability to load classes from different sources.
- Large companies are backing it. Sun, IBM, Oracle, Nokia, ...
- Runs on mobile phones and other embedded devices.
- Advanced programming tools: availability of IDE, Aspect oriented programming, refactoring tools, testing tools, building tools.
- Availability of open source packages. Lots of functionality is available for free.
Conclusion
ZOPE
- Well suited to develop relatively simple web based applications.
- Experiments, prototypes.
- Fast fixes.
- Cheap.
- Small business applications.
J2EE
- Complex applications, complex requirements.
- Scalability for very large applications. Scalability on different levels:
- Code scalability: Structuring and packaging of the code.
- Usage scalability: can accommodate large number of users (> 1500).
- Availability: fail-over, ...
- Large business applications.