Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Some thoughts on product and vendor lock-in:</p> <ul> <li>Try to be as vendor and platform independent as possible. This will prevent you from having to reimplement everything from scratch with a new product/platform/framework etc.</li> <li>This practically means using Java SE + Java EE + and open source RDBMS like PostgreSQL encapsulated by JPA from Java EE. Do not use additional libraries, frameworks (spring, hibernate,...) etc. This way you can switch products and vendors any time you need.</li> <li>I think that you can only get this level of product- and platform independence with Java. Even if you use OSS libraries and frameworks, you will regret using them if you find out that the implementation does not suit your needs and you have to redo everything.</li> <li>You can check the product independence of your code with the <a href="http://java.sun.com/j2ee/avk/" rel="nofollow noreferrer">Java Application Verification Kit</a>.</li> <li>Spend some time on the Architecture beforehand but also redesign the Architecture throughout the implementation. A good book (unfortunately only german) is "Java EE 5 Architekturen" by Adam Bien.</li> </ul> <p>@j_random_hacker: Actually, no - I still think that my first point is an argument for using java in large applications, not against it. Every language is ONE language. So you always have to do a commitment to a language, of course.</p> <ul> <li>But Java SE &amp; EE include the language, compiler, virtual machine as well as all libraries/frameworks necessary. But there are different IMPLEMENTATIONS of the whole Java SE/EE platform: Java SE (JDK) from Sun, Apache, IBM, HP, Oracle, BEA. Java EE (Application Server) from Sun, Apache, Red Hat, IBM, Oracle and others. .Net with C# does only have one implementation (from Microsoft and an implementation of the somewhat similar language/platform called Mono). </li> <li>PHP also has only one implementation, I think. There are plenty of different C++ compilers. But they all implement slightly different C++-languages and they are not bundled with libraries who all share the same API. Choosing Java, I know that I can choose between half a dozen Java SE implementations and half a dozen Java EE Application Servers to run the software, which in turn run on Linux, Solaris, FreeBSD, HP-UX, IBM z/OS, Windows, Mac OS X and on a very large variety of hardware platforms. So I just do not have to worry, if I find a really bad implementation problem late in development or even in production - I would just walk away from Sun and would never look back. (This is why I recommended the Java Application Verification Kit. By checking your source with it you can be sure, that Sun, IBM, Oracle or any other evil company did not sneak any of their proprietary stuff as dependencies into your source which could bind you to that company. You are free as a bird.)</li> <li>You cannot do that with PHP or Ruby. With those languages, you would have to patch the implementation problem by yourself, if no one else does it, because spending months of bug patching time into PHP or Ruby is still less effort than rewriting your complete application.</li> <li>Sun has open sourced both: Java SE (the complete JDK) and Java EE (Glassfish application server). The only thing, which is not "open source" is that there is a binding language specification, which is led by sun and gets massive contributions by others. This is why you can grab the Java implementation from sun, modify the Java language and redistribute that source and binaries, but cannot call that "Java" any more if this is not in line with the language specification (Sun protects the Java Trademark to only be applied to things actually java). This might sound "evil" at first, but it actually ensures, that there is such a thing as "Java": You can write a java application and run it on any java implementation. You cannot do that with C++ as there is no C++ specification which is agreed upon by every c++ implementation (a source code might compile with the Intel C++ compiler, but not with the GNU one) and - more importantly - there is no common library: if I write a C++ program with the QT library, it will not compile with the GTK library, as they have completely different APIs.</li> <li>If you cannot stand anything Sun microsystems, but want an open source Java, than you can just use <a href="http://harmony.apache.org/" rel="nofollow noreferrer">Apache Harmony</a> (Java SE) with <a href="http://geronimo.apache.org/" rel="nofollow noreferrer">Apache Geronimo</a> (Java EE) on top of it.</li> </ul>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload