Home
Main website
Display Sidebar
Hide Ads
Recent Changes
View Source:
Java
Edit
PageHistory
Diff
Info
LikePages
You are viewing an old revision of this page.
View the current version
.
''Welcome to the huge sprawling mess that is our [Java] page.'' [Java] is a cross-platform ProgrammingLanguage created and controlled by SunMicrosystems. [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 (if it is one at all) of requiring GarbageCollection. 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. 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). [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. [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 [Java] 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.4.1 at the time of writing). To adress the problems with the changes in Java from 1.1 - 1.5 Sun has released the Java Webstart which is a one click auto update function for the Java Run Time Environment. Java is widely used for games in the internet, java for mobile phones is the largest growing java market which in 2005 grew to a 350 billion dollar buisness on a world scale. For latest news on java game development visit http://javagamedevelopment.net [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. 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 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. [Java] also has limitations due to its ClassFile format. 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?) 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++] ---- CategoryProgrammingLanguages, CategoryImperativeProgrammingLanguages, CategoryObjectOrientedProgrammingLanguages, CategoryMachineOrientedProgrammingLanguages
90 pages link to
Java
:
Sakai
UndefinedSemantics
hsqldbNotes
ReelTwo
MarcelVanDeSteeg
Compiler
CastingPointerToFunction
ClamAV
InLining
OCaml
BuildTools
JavaServerPages
DeCompiler
javac
VirtualMachine
Ant
SymmetricMultiProcessing
ClassFile
InNeedOfRefactor
BinaryExecutable
J#
PolymorphicTypes
urpmi
NullPointer
JDBC
YAML
AntVsMake
WaikatoCourseDescriptions
Cocoa
BitTorrent
JavaNotes
JavaDoc
APL
GeoffCant
JavaDebuggingHints
OpenSource
J2EE
ByteCode
JVM
Profiling
XimianDesktopNotes
MarkupLanguage
TimCareySmith
NameSpace
CorporateProgramming
MultiThreaded
JavaCompilerCompiler
HotSpotCompiler
JarFile
LinkedList
RandomNumberGenerator
Introspection
Xerces
EventModel
Ada
Eclipse
ObjectOrientation
PostgresVsMysql
ToolKit
C#
Interpreter
ReligiousWar
JDK
C
appletviewer(1)
JavaDeps
JRE
CamelCase
GCC
CraigMckenna
Synchronisation
Library
StrictEvaluation
LookingGlass
GarbageCollection
Kate
Algol
C++
WhyIHatePerl
JavaScript
JavaAndC++
JabberClients
UbuntuNotes
CrossPlatform
ProgrammingLanguage
JBoss
SunMicrosystems
HelloWorld
TomCat
GianPerrone