Penguin
Annotated edit history of Java version 22 showing authors affecting page license. View with all changes included.
Rev Author # Line
20 AristotlePagaltzis 1 ''Welcome to the huge sprawling mess that is our Java page.''
2
3 [Java] is a cross-platform ProgrammingLanguage created and controlled by SunMicrosystems.
10 StuartYeates 4
5 Java shares simlar syntax to [C]/[C++], but differs in some fairly major ways:
20 AristotlePagaltzis 6
7 GarbageCollection:
8 The programmer need not worry about memory leaks, at the expense (if it is one at all) of requiring GarbageCollection.
9 Compiled to ByteCode:
10 Binaries are machine-independent ByteCode, the intention being "write once, run anywhere".
11 This usually works for non-windowing, non-audio applications.
12 It means Java binaries need a special run time environment to run.
13 Huge standard [API]:
14 It is enormous and does ''lots'' of stuff, in a platform independent way.
10 StuartYeates 15
16 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.
17
18 Java makes networking easy as pie. Networking between different platforms wasn't always too easy before Java, but it is very simple with Java. It even makes multi-threading easy, and platform independant (the programming is platform independant, but the running is platform dependant, unfortunately).
19
20 Java is an example of good object oriented design (generally). Almost all of Java's internal classes are very well defined and all follow a nice naming convention.
21
22 Java applets allow Java programs to be written and run in [WebBrowser]s. Unfortunately, after Java 1.1, Microsoft didn't quite agree with SunMicrosystems and stopped updating the version of that comes with InternetExplorer, the most common WebBrowser. Because of this, most applets you see on the internet today are limited to a very old version of Java and don't make use of all the new features in Java today (version 1.5.0 at the time of writing). Java is widely used for games in the Internet and Java for mobile phones grew in 2005 grew to a $350 billion dollar buisness on a world scale.
23
22 CraigBox 24 ~JavaBeans allow dynamic introspection of software components and streaming of state-full objects across the network without full knowledge.
10 StuartYeates 25
12 AristotlePagaltzis 26 !! Issues
27
17 JohnMcPherson 28 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.
29
10 StuartYeates 30 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.
31
32 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 SunMicrosystems 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.
33
34 Java also has limitations due to its ClassFile format.
35
20 AristotlePagaltzis 36 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?)
10 StuartYeates 37
16 JohnMcPherson 38 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.
39 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.
10 StuartYeates 40
13 SamJansen 41 See JavaNotes, [JavaAndC++]
12 AristotlePagaltzis 42
10 StuartYeates 43 ----
44
45 CategoryProgrammingLanguages, CategoryImperativeProgrammingLanguages, CategoryObjectOrientedProgrammingLanguages, CategoryMachineOrientedProgrammingLanguages

PHP Warning

lib/blame.php:177: Warning: Invalid argument supplied for foreach() (...repeated 4 times)