Penguin

Differences between version 18 and predecessor to the previous major change of Java.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 18 Last edited on Wednesday, April 7, 2004 11:24:02 pm by StuartYeates Revert
Older page: version 15 Last edited on Wednesday, November 19, 2003 6:46:16 pm by AristotlePagaltzis Revert
@@ -1,12 +1,12 @@
 [Java] is a cross-platform ProgrammingLanguage created and controlled by [Sun]. 
  
 [Java] shares simlar syntax to [C]/[C++], but differs in some fairly major ways: 
 ; GarbageCollection : The programmer need not worry about memory leaks, at the expense of having a garbage collector. 
-; Compiled to ByteCode : Binaries are machine-independant ByteCode, the intention being "write once, run anywhere". This usually works for non-windowing, non-audio applications. It means [Java] binaries need a special run time environment to run.  
-; Huge standard [API] : It is enormous and does ''lots'' of stuff. 
+; Compiled to ByteCode : Binaries are machine-independent ByteCode, the intention being "write once, run anywhere". This usually works for non-windowing, non-audio applications. It means [Java] binaries need a special run time environment to run.  
+; Huge standard [API] : It is enormous and does ''lots'' of stuff, in a platform independent way
  
-[Java] really shines in a couple of areas, particularly documentation: the documentation of the [Java] [API] is excellent. It surpasses the masses of documentation found in Microsoft's [MSDN] in quality and beats documentation I have seen for any OpenSource project to date. 
+[Java] really shines in a couple of areas, particularly documentation: the documentation of the [Java] [API] is excellent. It surpasses the masses of documentation found in Microsoft's [MSDN] in quality and beats documentation I have seen for any OpenSource project to date. It's comparable to [UNIX] man pages, but much more consistent and much better interlinked
  
 [Java] makes networking easy as pie. Networking between different platforms wasn't always too easy before [Java], but it is very simple with [Java]. 
  
 [Java] even makes multi-threading easy. And platform independant (the programming is platform independant, but the running is platform dependant, unfortunately). 
@@ -18,25 +18,26 @@
 [Java]Beans allow dynamic introspection of software components and streaming of state-full objects across the network without full knowledge. 
  
 !! Issues 
  
-But Java, like any ProgrammingLanguage, has cons. First, Java's Run-time Environment (JRE) is a big download and is needed for any user wishing to run a Java program. This JRE also incurs quite a large memory penalty, even running a simple application can take quite a large amount of memory. 
+But Java, like any ProgrammingLanguage, has cons. First, Java's Run-time Environment (JRE) is a big download and is needed for any user wishing to run a Java program. This JRE also incurs quite a large memory penalty, even running a simple application can take quite a large amount of memory. Also, despite the promise of "write-once, run anywhere", changes to the language [API] and differences in JRE versions results in problems for developers and users. See http://developers.slashdot.org/comments.pl?sid=94959&cid=8142663.  
+  
  
 Java has a GraphicalUserInterface library; in fact it has two. Swing, a high level and well-designed API which is built upon AWT (Abstract Window Toolkit). These work well enough, but don't take the native LookAndFeel of a system (though they can attempt to emulate it), and can look quite ugly. They can also be quite unresponsive. 
  
 Java isn't fast. Now, I am not attempting to start a FlameWar. Java can actually perform very well, as fast as C code in many cases. However, especially for [GUI]'s, Java doesn't come out too well. Even on a 650MHz computer, many Java interfaces programmed with the standard Java windowing toolkits will be slow and unresponsive. Case in point: Sun's own Forte. This is now called [Sun][[tm] One Studio 4, but is a good case of an unresponsive system written in Java that seems to otherwise be very well designed and implemented. 
  
 [Java] also has limitations due to it's [ClassFile] format 
  
-Sun's JRE (run-time environment) is not [Free]-software (although it is [free] as in $$, and the source code is available). The "other" widely used JRE for [Linux] distributions, blackdown, is based on Sun's code, so therefore isn't Free either. Neither [Debian] or RedHat or many of the other distributions will officially distribute non-Free software.  
  
 The popular JREs start a new virtual machine for each java program, rather than sharing one amongst all programs. This combined with the large memory overhead can make it impractical on machines more than a few years old. (AddToMe - is this still true these days?) 
  
-The lack of a Free JRE (along with JRE size and speed issues) is probably one of the biggest obstacles to wide-spread adoption of Java on Linux. However, most of the issues mentioned above are implementation issues so could in theory be overcome. For example, the [GCC] project is part-way through a java compiler that would (of course) be licensed under the [GPL]. 
+Sun's JRE (run-time environment) is not [Free]-software (although it is [free] as in $$, and the source code is available). The "other" widely used JRE for [Linux] distributions, blackdown, is based on Sun's code, so therefore isn't Free either. Neither [Debian] or RedHat or many of the other distributions will officially distribute non-Free software.  
+ The lack of a Free JRE (along with JRE size and speed issues) is probably one of the biggest obstacles to wide-spread adoption of Java on Linux. However, most of the issues mentioned above are implementation issues so could in theory be overcome. For example, the [GCC] project is part-way through a java compiler that would (of course) be licensed under the [GPL]. http://java.debian.net/index.php/MovingJavaToMain shows the progress on getting Free java programs (and runtimes) into Debian's main stable distribution
  
 See JavaNotes, [JavaAndC++] 
  
 ''Lots to be refactored here. AddToMe.'' 
  
 ---- 
  
 CategoryProgrammingLanguages, CategoryImperativeProgrammingLanguages, CategoryObjectOrientedProgrammingLanguages, CategoryMachineOrientedProgrammingLanguages