27. May 2001: Java)
about programming languages
|Now I discuss a few programming languages for programmers, a topic
which is often underestimated in practical importance.
You need programming languages today also as decades before - the so-called 5GL are neither generally applicable nor available and at least partly too far away from the operating systems to be useful in every case.
Besides special languages like LISP or PROLOG there are only the procedural and object oriented ones to discuss. The most widespread of these are nowadays C respective C++, what I consider as a major fault: these languages don't support important aspects of good software engineering. For example, the lack of clean interfaces without side effects is a major drawback and also the low inherent safety and the low readability of programs written in such languages. Even good, disciplined developers can compensate for these weaknesses only up to a certain degree; not as good developers write in C and C++ code, which falls far below the requests of modern, reliable and extendable software development. About the clearly improved Java read below (compared to C and C++).
At now only five languages exist, which support all requirements of modern software engineering: ADA, Modula-2, Modula-3 and Oberon Java. And only the last three of these offer also all relevant OOP features, which become more and more important. Modula-3 and Oberon are both descendants of Modula-2, but aim nonetheless in different directions: Modula-3 is better suited for application development of not too machine/operating system near ones, Oberon is more adequate for development of operating system extensions and machine nearer codes. But the differences are only slight and the most obvious one is the language definition, which is in Modula-3 considerable more complex, but comes with more built-ins as in Oberon. And further Oberon is delivered with an own operating system with the same name respective an own development environment, which utilizes and unites it's features with it's expandability.
Now follow a few links to both languages:
|At the site of the language inventor and his colleagues you can access all around Oberon - native Oberon system for differents platforms along with front-end variants for UNIX systems and documentations of all type and so on. You need simply no other resource. (One remark: N.Wirth coined the name of the language, when he saw 1986 pictures of the second largest natural satellite of Uranus, the seventh planet of our solar system. This moon is slightly less than half in diameter than earths moon and features several unusual surface markings.) Believe it or check it out on that Oberon page: the entire language definition fits on one to two sheets of paper (slightly depending from paper size and font size), when it is printed - it's more simple than that of Pascal.|
Official Modula-3 homepage not always reachable site...
|The language Modula-3 is also certified by Niklaus Wirth, but it's a seperate development by another groups. The newest release is actively maintained by a group in Montreal, whose site is presented as link on the homepage. For this you need the newest release of the libc6/glibc2 for LINUX. The Modula-3 package contains a modified GNU-C compiler for the Modula-3 translation into object code.|
You may now ask, what is old with SUNs relatively new Java language? The
fact is, that it is resembling an old (ancient!) Pascal implementation of the
first half of the 80's (really stone ange, eh?) in one important point: Instead
of compiling (and linking) the source code into machine executable processor instructions
the compiler converts it in a machine and OS independent so-called byte code, which is a similar approach to the mentioned dinosaur like UCSD Pascal,
which was available for CP/M (does anybody still remember that?) and the first,
at that time very premature MS-DOS and generated during compilation and linking
the so called P-code, which was subsequently interpreted by the UCSD runtime
system environment. Similarly Java needs generally either a JRE (Java Runtime
Environment) or another helper, like a Java capable browser, to work. But the
major advantage is clear: with the availability of both for every platform
also Java with it's own, also OS independent classes becomes really independent from the OS. And another big advantage against C++, from which it inherited
the majority of features, is the dismission of unsafe features like pointers,
multiple inheritance and manually memory allocation. The only little drawback results immediately
from these advantages: there is no chance to get the sometimes needed direct control
about certain hardware/OS resources by doing so in Java. This has to be done in
lower, more machine oriented languages like C (the [in-]famous JNI). But it's seldom necessary
and only in certain cases, to sidestep this restriction by escaping the Java
programming frame. Now follow a few links about this interesting language...
This is the only primary source for all main topics about Java, regarding its definition and classes, because SUN Microsystems, the modern and quickly advancing manufacturer of SPARCstations and SPARCservers with the mostly distributed commercial UNIX (Solaris) has invented and patented it. SUN is very open indeed, inviting all developers to work with them and recently they have even made the brave step to go open source with their (commercial!) Solaris OS like LINUX, probably to gain support from developers all over the world! LINUX was obviously a convincing example for the success of the open source model for operating system development... Clearly your first Java bookmark.
This will help surely a lot to keep track of other important Java resources on the net, due to the high dynamics, which this topic now has.JSwat Java GUI debugger Due to certain difficulties with Java 2 features debugging is no easy topic in Java --- aside from the great in-build debugger of IBMs highly proprietary Visual Age for Java (VAJ) IDE, which makes cooperation with not VAJ developers virtually impossible by it's black box repository, weird ordering habit regarding methods and fields, forced tab insertion and so on, there are few usable debuggers out there. JDB usage is only suitable for hardcore dbx and gdb used developers. Due to our experience (in my current company) this debugger JSwat is currently the best. The mentioned problem forces you to switch to "classic" mode, disabling the performance gaining JIT, to make debugging feasible; this holds true for all debuggers using the tools.jar debugger API, including JBuilder with its feeble in-build debugger (compared to VAJ and JSwat). CAUTION: every one to two weeks (at average) updates come out from there, so it makes sense to get a new version before debugging another time, if you do it only occasionally (what is a better programming style anyway, for debugging can't replace logical comprehension of the code).
A very important independent group of Java people. There you can get further informations and support. Currently ranked second after SUNs Java site in importance by Google!Emotionslos und Gefühlskalt --- ein Kollege, der Java-Experte ist (und nicht etwa Vulkanier, kleiner Scherz)
Von ihm können alle eine Menge lernen, und auch ich zähle mich dazu, komme ich doch mehr aus der Ecke der Wirthschen Sprachen. Bitte nicht von unserer Firma abwerben!
My colleague is a Java expert, most requested by us other developers. We and others can learn a lot from him about SUNs modern OOP language...
Of course the main development of SUN takes place on its own Solaris OS and due to its still large distribution also to MS Windows; therefore for LINUX it is quite important, to keep track with these two. You will need some special help at now for LINUX and Java from these sites, I guess... Hint: meanwhile SUN made true the announcement, to offer the LINUX JDK alongside with the Solaris and Windows versions, maybe the status isn't on the same level yet, so far I can judge. Eventually you check out IBMs LINUX JDK too? They seem to be a little more experienced with Java on LINUX ironically then SUN, despite the strong resemblence of Solaris and LINUX, while AIX is clearly further away from both UNIX versions...
more links (Internet) back to top back to main LINUX page back to main
comments, suggestions, wishes to: firstname.lastname@example.org public key
who am I