Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

C/C++

C++ Versus JEE


What's Missing?

The things you don't get in a single C++ shrink-wrapped box include:

    Session handling.
  • Database access.
  • Security (authentification, exploit safeness).
  • Easy distributed Computing support (such as with EJB).

However, thin and usable class libraries are available for most of these tasks. That said, it will cost you some coding to integrate, debug, and the like, and you'll not find all desired modules as readily packed as in a JEE application server. You won't, however, find a simple solution for clustering (with session replication). But in most cases you don't need it. An application layer load balancer will spread the jobs over a number of machines.

The Reality (Daily Life)

Based on my experience with the project mentioned at the beginning of this article, daily work on a JEE project differs from that in C++ projects. For C++ projects, the problems (in most cases) involved your own code. The problems to solve in JEE projects are more in the realm of configuration and maintenance of third-party modules. In retrospect we would have been better off to hire an experienced JEE administrator (although they can be hard to find).

Every component we used introduced its own (sometimes serious) problems: Eclipse with its numerous plug-ins did not work as expected, Struts required up to four files being changed if we modified a form page, and I am pretty sure that Hibernate introduced more problems than it solved.

Of course, there are poorly written C++ modules too.

Thesis: JEE is better suited for writing server applications.

Many mistakes can be avoided by the language, and much work is already done for you. Average programmers will make average mistakes. Thereby for an average and not highly demanding application, things like a garbage collector or prevention from pointers are an advantage.

Antithesis: C++ is better suited for writing server applications.

It gives you more control, more flexibility, and much more performance. Good developers will with ease take care of the problems of memory management, and they will be happy to manage pointers sometimes. C++ is not sophisticated, not simple, and there are deep pitfalls.

Synthesis

If you plan on large server applications that you expect will be used for a long time, you might be better of writing it in C++ if you have good C++ developers. For instance, consider Apache, written (of course) in C. In other cases, you might rather use JEE, but get a experienced administrator.

Conclusion

I still wonder why there are so few approaches for Web frameworks/toolkits or application servers written in C++. C++ is made for such a task. If you are in the situation of planning such a system, consider starting such a framework yourself. It might cost (much) more in the short term, at least until you have a working application. But in mid and long term, you (and maybe others too) will have many advantages. I think it will pay of.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.