The ProgramCreek.com blog has recently featured two interesting posts targeted at "advanced" Java developers: Top 10 Books For Advanced Level Java Developers and Top 10 Websites for Advanced Level Java Developers. These posts highlight resources that are especially beneficial to more experienced Java developers. I generally cannot argue with the lists as all the resources listed are useful to Java developers, but if I had to choose my top ten books and top ten online resources for advanced Java developers, there would be a few differences. In this post, I look at some of those differences in my list of best online resources for advanced and intermediate Java developers.
Many of the online resources on my list of best online resources for intermediate and advanced Java developers are the same as listed on the Xiaoran Wang's blog post Top 10 Websites for Advanced Level Java Developers. However, before reading that post, I was not aware of (and so have not had a chance to experience myself) two of them: LeetCode.com and Coursera. Although Wang also has had some interesting posts on ProgramCreek.com, I probably would not have had that site on my list, but it is not surprising he would list his own site on his list. I really like Wikipedia, but rarely use it related to software that I'm developing. Taking out those four sites, my top ten sites for advanced Java developers are as follows.10. Google News on Java
One easy way to learn about the latest developments in Java (something often of more value to experienced Java developers than those beginning to use Java) is to search Google News for Java.
The Javit (Reddit/Java) site does not have as many new articles and blogs referenced as other social media Java-oriented sites like JavaLobby and StackOverflow, but it seems to often link to a very different set of posts and articles than the other sites. I don't check it as often as the others, but I do find an occasional perusal of its links to be worth my time to learn something new about the Java ecosystem.
The Java Code Geeks site is a site that includes some original Java-oriented articles and posts in addition to a plethora of syndicated posts created by JCG partners. Several socially-oriented sites are on my list and many of the same articles and posts are featured on multiple of these socially-oriented sites, but each does have some differently featured posts than others.
7. Oracle Technology Network for Java Developers and Java Magazine
Oracle Technology Network (OTN) includes a Java section that features original Java-themed articles, Java news and announcements, references to other Oracle documentation, and links to Java-oriented blogs written by Oracle employees. Some of the employees' blogs that I've found most useful in terms of advanced Java concepts (advanced meaning complex or new) include Joseph D. Darcy's Oracle Weblog, Brian Goetz's Oracle Blog, Mark Reinhold's There's Not A Moment to Lose!, The Java Source, and Geertjan's Blog (which occasionally discusses NetBeans).
Java articles used to have to share space and focus with Oracle database and other products in Oracle Magazine. Today, Java gets its own electronic magazine in Java Magazine, published every two months. The articles in this online magazine are often heavy on newer topics and more advanced topics and so are especially well suited to experienced Java developers.
6. IBM developerWorks
I have found numerous useful articles and presentations for advanced Java developers on IBM developerWorks, which includes a Java emphasis. Authors of articles on this site include Brian Goetz, Elliotte Rusty Harold, Kelvin Lawrence, Ted Neward, and Neal Ford. Speaking of Neal Ford, his IBM developerWorks series on Java.next is a great example of the types of articles that will often appeal to advanced Java developers. IBM developerWorks has published in-depth (in addition to introductory) Java-oriented articles for many years and so now provides a nice mix of both the new and the historically useful.
JavaWorld has been around for a long time and one of the advantages of this is the rich archive of detailed articles written against many different major releases of Java. JavaWorld has evolved somewhat over the years and currently provides a mix of original content with syndicated blog posts and syndicated versions of articles published by sibling publications such as InfoWorld.
DZone.com is interesting from a general software development perspective and its "Java Zone" JavaLobby.com is interesting from a more Java-specific frame of reference. Both the more general DZone and the more specific JavaLobby link to articles and blogs submitted by "the community." Because the same community votes up or down and can leave comments on the posts, there can be strong community endorsement of good resources, warning to avoid spam or less valuable resources, and comments exchanged that add to the value of the referenced posts. Often, I've found the comments on the DZone syndicated versions of post to be better and more interesting than those of the original article referenced on DZone. As an example of this, the DZone-syndicated version of Top 10 Books for Advanced-level Java Developers has more comments than the original post as of this writing.
The java.net site is another on which I browse headlines on nearly a daily basis during the work week. There are a wide variety of referenced blogs and articles as well as polls on topics of interest to Java developers and editorials on Java-related topics. It's a nice single site to quickly gauge the current events in the world of Java.
I doubt there are many Java developers who don't appreciate stackoverflow.com on a regular basis. Although the web in general has changed the way we write, maintain, and debug code, stackoverlow.com has been one of the biggest examples of how things have changed. Software development knowledge was formerly traded purely in conversations, books, articles, and conferences. Then, the advent of the Internet brought forth forums and usergroups for sharing software development knowledge and tactics. The rise of powerful search engines made it much easier to find what one was looking for.
The stackoverflow.com site has made things better than ever for the social collaboration among Java developers, making it easy to locate multiple solutions to multiple problems with community discussion about the merits and disadvantages of each approach. I find this valuable because I rarely need to go to the web for "easy" stuff; I typically go there for strange error messages or little known issues and stackoveflow.com meets that need. The ProgramCreek.com post summarizes it nicely: "Stackoverflow.com is probably the most popular website in the programming world." There is good reason for this.
1. Oracle's Java SE and EE Documentation and OpenJDK Documentation
By Java SE and EE documentation, I mean the following:
- Java SE (7) Documentation
- Java SE 7 API Documentation
- JDK (7) Tools and Utilities
- The Java Language Specification: Java SE 7 Edition
- The Java Virtual Machine Specification: Java SE 7 Edition
- Java Programming Language Enhancements (brief summary of highlights with links to more details for each new major SE release)
- Java SE Tutorials (even useful for advanced Java developers working with a corner of Java new to them)
- J2SE 5 Language Guide (it may not be the newest version, but many fundamental language features in Java were introduced with J2SE 5 and some of the best resources on them are in this language guide)
- Java EE (7) Documentation
The OpenJDK documentation is useful in a similar fashion to how the Oracle Java SE and Java EE documentation is useful. The OpenJDK documentation is particularly useful for learning about new releases of Java such as JDK 8. Significant features of each release are briefly summarized with links to significantly more detail. Examples of this are Project Lambda and Project Jigsaw. Being able to look at source code is illustrative and helps a Java developer become more skilled as well.
There are several other useful online resources for improving one's Java abilities even when already fairly experienced in Java. One such example is the Java Specialists Newsletter. Other examples include some blogs that seem to focus on advanced Java topics such as Peter Lawrey's Vanilla #Java.
In many ways, software development is easier than it's ever been with the ability to find useful hints, tips, and answers to questions online with powerful search engines and using social media that helps target answers that tend to be more accurate. These resources have allowed us to expend energy and effort in other creative efforts in software development. In this blog post, I have looked at my top ten online resources for continuing to learn Java even after working with the language and platform for many years. Many forums have questions (and answers) that point newcomers to Java to appropriate beginner materials. I liked Wang's post on online resources for more advanced Java developers and have used this blog post to share my own (slightly different) list of good online resources for more advanced Java developers.