Purpose
To make Java a friendlier language. To make it easier for beginning and experienced developers to learn and work with Java on Fedora.
Request for Additions and Corrections
Please e-mail me your ideas.
How to Learn Java
Here are some quality learning resources:
- A free on-line and printable book: Think Java: How to Think Like a Computer Scientist by Allen B. Downey
- An on-line course: Introduction to Programming Using Java by David J. Eck
- Video Tutorials at thenewboston
Java is Available from Multiple Vendors
The standard Java platform is implemented by products from multiple vendors:
- OpenJDK is the default for Fedora
- Oracle
- IBM
- GNU Java
OpenJDK is the product backed by the open source community, including Fedora.
Java Version Numbers: Apparently Designed to Produce Customer Confusion
Sun Microsystems, the creators of Java, apparently thought it would be good marketing to refer to the same versions of Java with different numbers.
- 8 = 1.8
- 7 = 1.7
- 6 = 1.6
- 2 = 1.2, 1.3 & 1.4
Where is Java Installed?
/usr/lib/jvm Docs?
Setting the Active Java Runtime
alternatives --config java
Invoking Java Runtime Programs
- java
- javac
- jar
How to Run Java Applications
How you run a Java application depends on how it was packaged and distributed to you. If the packaging was done well, running the application can be as simple as selecting it from a menu on your favorite desktop environment. However, since one of the primary goals of Java is that Java applications should work on any and all operating systems, it is likely that you may receive a Java program that is packaged in a very basic form (for example, a .class or .jar file) that works on all operating systems. This makes it slightly harder to run the application because you have to understand a little bit about how Java works.
Running a Jar File
Running a Class File
Creating Java Programs
Editing Java Code
Compiling Java Code
Testing Your Application
Packaging Your Application for Distribution to Users
IDEs and Editors
Vim
Emacs
Eclipse
Android Studio
BlueJ
Rational Application Developer from IBM
Program Types
Command Line Programs
GUI Programs
Swing
Gnome
KDE
Web Apps
Tomcat
Jetty
Mobile Apps
JEE Apps
Accessing Native Code Libraries
C/C++
Ada
Appendix A: Why Use Java?
Appendix B: Complaints About Java
Isn't Java too Old?
Just because something is new does not make it better. Windows Vista was new once, but it was never better. There are also technologies much older than Java that are still considered to be good and relevant:
- UNIX - the ideas and standards behind Linux
- Linux - Primary server operating system used by Google, Facebook, YouTube, etc.
- C - Linux, BSD Unix, Windows, and MacOS are all written in C.
- C++ - Google Chrome, Firefox and Internet Explorer are written in C++
The idea that Java is too old is nonsense, as shown by the older technologies that we use and take for granted every day.
The truth is the opposite. The best technologies start with good ideas and are refined over time to be better and better. Java is better today than it ever has been and is still evolving.
Isn't Java the new COBOL?
Java is the language behind Minecraft, Runescape, Android, and Hadoop. What about those products says "COBOL" to you?
Isn't C# a Better Language?
C# is just Java repackaged with a few changes. Microsoft tries to differentiate C# from Java by saying things like "CLI is not byte code." But, that's basically what it is, regardless of what rhetoric Microsoft uses.
Java is not just a language, it's a whole ecosystem of ideas and components that work on all operating systems.
C# and .NET are not provided by Microsoft for non-Windows platforms, whereas Java is provided by Oracle in forms that work the same on Windows, Mac, and Linux. And other vendors provide conforming implementations of Java for their platforms like IBM's Java for AIX.
Even though Mono exists on non-Windows platforms, there is no guarantee of compatibility between Mono on Linux and C# on Windows and there is for Java on multiple platforms.
If you disagree, I challenge you to write a C# app on Windows that does something useful and try to run it on Linux with Mono. In contrast, this cross-platform capability is common place with Java apps. Examples are: Eclipse, soapUI, Minecraft, RuneScape, Hadoop, SquirrelSQL, Apache Tomcat, IBM WebSphere Application Server, etc.
- Isn't Java insecure?
- Isn't Java too slow?
- Isn't Java too wordy?