O'Reilly Android Cookbook



Get legal. Get OpenOffice.org


Humour: XKCD PHD


Best viewed with
Any Browser!


Learning - General - Latest JavaSE - Object Oriented Design/Analysis - Threading - Patterns and Method - Testing and TDD - Performance/GC - Mobile/Embedded - ORM/Database - Server (general) - Web Tier - Web Services - Web2/AJAX - JavaFX RIA - Messaging - XML - Enterprise - General - JVM Languages - Java Development Tools - Application Deployment

Ian Darwin: Java Technology Resources

This is a list of some links that I have found useful. The master version of this file lives at https://darwinsys.com//java/javaResources.jsp.

Top Links

The Java Community Process - http://www.jcp.org/

More interesting to advanced developers and architects, but actually important to us all. JCP is where new official standards for Java get initiated, argued about, and ratified. If you care about Java's future, be there.



Resources: Teaching/Learning Java

  • Java for Young Developers, a resource page for younger or newer developers.
  • BlueJ is "a Java IDE specifically designed to learn and teach object-oriented programming and Java".
  • Small, simple and Safe. See writeup on O'Reilly.net
  • Gild - from U of Victoria Gild is more aimed at classroom use than self-teaching. This is a plug-in that requires you have Eclipse, the leading full-strength IDE.
  • Greenfoot bills itself as "a combination between a framework for creating two-dimensional grid assignments in Java and an integrated development environment (class browser, editor, compiler, execution, etc.) suitable for novice programmers. While Greenfoot supports the full Java language, it is especially useful for programming exercises that have a visual element. In Greenfoot, object visualisation and object interaction are the key elements..."
  • DrJava "is a lightweight development environment for writing Java programs. It is designed primarily for students, providing an intuitive interface and the ability to interactively evaluate Java code. It also includes powerful features for more advanced users..."
  • Sun's Java Tutorial - several complete textbooks online for free; can also buy on paper.
  • Teaching Mobile Computing to Generation C, by CS Professor Qusay Mahmoud.

Resources: Java Developer: General

Just so you know that Java is not the only language around, check this list of 15 Languages Every Dev Should Know.

Most O'Reilly Books (http://java.oreilly.com/) are excellent. O'Reilly has a rep as the best Java, UNIX, Python, Perl, Mac OS X and MS-Windows technical publisher. They published my Java Cookbook, revised 2014, my Android Cookbook (revised 2017), and the e-book Checking Java Programs (2007).


Dealing with What's New in Java 9

Similarly, Java 8

See Learning Tree's one-day courses on Java 8 Part 1 and Part 2.

Object-Oriented Design/Analysys

Note that as of this writing (2016-12-29) ObjectMentor's domain has been taken over by a domain squatter so the links in the "Unble Bob" article are broken. Here is his book list on Amazon: Robert C. Martin.

Threading


Patterns and Methods

Project Management


Testing and TDD

JUnit - general add-ons

JUnit - Domain-specific


Performance, Memory Management, Garbage Collection, ...

General

GC/Memory Management


Java in Mobile/Embedded


More than half of the smartphones in the world, and almost all the low-cost "feature phones", run some form of Java:

  • Feature Phones run Java Micro Edition (Java ME); it's generally clear that Java ME is unsuitable for smartphones in its present state
  • Research in Motion Blackberry smartphones use a licensed but vastly extended Java ME
  • Android smartphones and tablets use an (unlicensed, lawsuit in progress) Java SE that keeps to the JavaSE specification except that it omits AWT and Swing, providing an alternate GUI that is suited to the devices it targets, as well as many valid (non-java.*-packaged) extensions
  • Oracle is promoting JavaFX as an alternative, though this is an interesting technology it has very little traction at present.

Some links follow on each of these technologies.

Java ME

T.B.A.

Blackberry

T.B.A.

Android

JavaFX

T.B.A.

Persistence: JPA/ORM, Database, JDBC

General

NoSQL (non-relational, scalable databases) a.k.a. "the post-relational era" according to some

Hibernate Performance:

Remote Methods Invocation (RMI)

Server Side

Java Web Tier

By which I mean browser-based web sites developed in Java.

Java Web Services

By which I mean SOAP-based and RESTful Web Services, program-to-program communication rather than browser-to-server communication. Some people equate Web Services with the vastly more generic term "SOA": you can use web services in SOA, but SOA can be applied to many other technologies.


Web2: AJAX Asynchronous JavaScript and XML

N.B. Modern JSF frameworks like PrimeFaces/OpenFaces/RichFaces/IceFaces above provide AJAX automatically!

Web Server Security (SSL)


JavaFX - RIA/Rich Clients in Java

XML

Enterprise JavaBeans (EJB)

Note: Anything detailing EJB 2.1 or earlier is totally obsolete; any new projects should use EJB 3 (session beans) and JPA (persistence, replacing what used to be called "Entity EJB"). The new stuff is much better!


Asynchronous Messaging (M.O.M.)

This is about Message Oriented Middleware (MOM), not about "instant messaging" (but see Jabber.org for that).


Enterprise - General


JVM Languages

Newest first, more or less.

Java Development Tools

Integrated Development Environments (IDEs)

NameURLNotes
Borland JBuilderjbuilder.borland.com/Full free version available
NetBeans (Open Source)http://www.netbeans.com NetBeans and Sun Studio share code
IBM Websphere Studiohttp://www.ibm.com/ Eclipse and Websphere share code
Eclipse (Open Source)http://www.eclipse.org/
IntelliJ IDeahttp://www.jetbrains.com/idea
Sybase PowerJhttp://www.sybase.com/
WebGainhttp://www.WebGain.com/Visual Cafe - the oldest Java IDE

Of these, I use Eclipse most of the time. We even have it running on OpenBSD thanks to the work of Kurt Miller and the Java BSD gang (thanks, guys!).

Other

  • IBM AlphaWorks - http://alphaworks.ibm.com/ Source of "Jikes", free fast compiler.
  • Janino, an embeddable Java compiler.
  • Native Code Compilers for Java:
    • The Free Software Foundation's GNU C Compiler (gcc) has another sibling - gjc, the GNU Java Compiler, which can compile some Java apps into native code.
    • TowerJ had a Java-to-native code that only supported command-line programs (non-GUI), aimed at the server-side market, but they appear to have gone bust.
  • FindBugs, a static checker
  • PMD, a static checker
  • PathFinder, a dynamic checker
  • JMP, the Java Memory Profiler

UML Tools


Application Deployment

There are several good installation programs for deploying Applications.

  • Sun's Java WebStart (bundled with the JRE)
  • izpack
  • Install Anywhere by ZeroG.com
  • JInstall
  • InstallShield Java Edition
  • NullSoft Installer (nsi) isn't written in Java but is used e.g., by Tomcat to install under MS-Windows.

Training

Learning Tree (take more courses! :-)

http://www.LearningTree.com/, especially Intro Java, Java Web Apps, Java Web Services, Distributed Java, and Enterprise Design Patterns.

Finding Java Source Code

Your Instructor's web site: https://darwinsys.com//

Java stuff: https://darwinsys.com//java/

Free, reliable, secure open-source UNIX system:

http://www.OpenBSD.org, OpenBSD is a leading freeware operating system. More secure than Linux, runs on more platforms than FreeBSD. Good for secure firewalls and servers. Four mugs of beer for these guys! Java (both Kaffe and JDK, at least on i386 platforms) available. Servlets and JSP available on same platforms via Tomcat.


Version $Id$