Everybody can author a new question


Subscribe to JavaBlackBelt: eMailAlertsEmail Alerts newslettersWeekly Newsletters
Get JavaBlackBelt: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn

Top Stories

Preparing for an interview? Want to just revisit Java SE 7 features? Trying to recollect or revise a Java SE programming construct? Let me take you back in time to what was introduced first in Java SE 7? Join me for this tutorial series on Java as we all eagerly await the official release of Java SE 9. Java SE 7 Release Date: 28-07-2011 Java SE 7 Code Name: Dolphin Java SE 7 Highlights Strings in switch statements. Automatic resource management in try statements. Improved type inference for generic instance creation, AKA the diamond operator <>. Simplified varargs method declaration. Binary integer literals. Allowing underscores in numeric literals. Catching multiple exception types and rethrowing exceptions with improved type checking. I have provided some of the most important core language enhancements for JDK 7.0, along with code samples. The examples provided bel... (more)

How to Diagnose Java Resource Starvation

We can visualize resource starvation using an elaborate rendition of the Dining Philosophers Problem. This classic metaphor of resource allocation among processes was first introduced in 1971 by Edsger Dijkstra in his paper "Hierarchical Ordering of Sequential Processes." It's been a model and universal method for verifying theories on resource allocation ever since. The metaphor goes like this: There are three well-known philosophers in an Asian bistro. Dinner is served but they are only given three chopsticks because the restaurant's supply truck has been stuck in a snow storm for a couple of days. Naturally each philosopher needs two chopsticks to eat his dinner and each is protected from interference while he uses a chopstick. Plato skipped lunch that day and insists that he should have priority or else he'll faint. If he doesn't give up his chopsticks, the other ... (more)

Anatomy of a Java Finalizer

A couple of patterns that could cause Java heap exhaustion were identified from years of research at IBM. One interesting scenario was observed when Java applications generated an excessive amount of finalizable objects whose classes had non-trivial Java finalizers. What Is a Java Finalizer? A Java finalizer performs finalization tasks for an object. It's the opposite of a Java constructor, which creates and initializes an instance of a Java class. A Java finalizer can be used to perform postmortem cleanup tasks on an instance of a class or to release system resources such as file descriptors or network socket connections when an object is no longer needed and those resources have to be released for other objects. You don't need any argument or any return value for a finalizer. Unfortunately the current Java language specification does not define any finalizers for a... (more)

An Introduction to Abbot

Graphical user interface (GUI) testing is a potentially problematic area because constructing effective test cases is more difficult than the corresponding application logic. The roadblocks to effective functional GUI testing are: Traditional test coverage criteria like "80% coverage of the lines of code" may not be sufficient to trap all the user interaction scenarios. End users often use a different user task interaction model than the one conceived by the development team. Functional GUI testing needs to deal with GUI events as well as the effects of the underlying application logic that results in changes to the data and presentation. The common methods for functional GUI testing are the "record and execute" script technique and writing test programs for different scenarios. In the "record and execute," the test designer interacts with the GUI and all the eve... (more)

Java for Managers -- What Should They Know?

Last month, JavaBlackBelt completed a survey where developers said their teams would be 25% more productive if their management committed to skills management... which led me to consider: Which Java technologies do developers think that managers should understand better in order to make great decisions about skills management? I'll suggest, as a start: -- Java SE and EE basics -- ORM's (Hibernate, ...) -- Web Frameworks (lStruts 2, ...) -- IDEs (Eclipse, ...) -- Source Code Mgmt -- Testing Methods -- JavaScript -- Ajax Very open to your thoughts, and who might find such a course useful... feel free to comment here and/or send email to java4managers@globalforcedirect.com. ... (more)

eLearning + Coaching = Breakthrough in Java Skills?

JavaBlackBelt just announced its “Coached e‐Learning” for Java developers. In a developer survey to be released next week, this Coached e‐Learning was selected as the #1 choice for Java learning compared with classroom training and self‐paced e‐Learning. Here’s how it works: 1. In these courses, the coach meets with the student to begin each course, reviews the course plan and materials, and agrees to a schedule. 2. The student then learns at their own pace from the JavaBlackBelt eLearning platform ‐‐ online materials and videos, community forums, exercises, and exams. 3. Along the way, the coach checks intermediate goals, answers questions, helps overcome obstacles, and oversees progress. 4. The course is completed when the student passes the final exam, which, depending on the student’s schedule and pace of learning, follows one to two weeks of coursework. The ... (more)

Java Kicks Ruby on Rails in the Butt

This article tries to demonstrate that Java can be more productive than Ruby. We are going to develop the same application of the article Rolling with Ruby on Rails Revisited (part 1 [1] and part 2 [2]) but using POJO [3]s annotated with JPA [4] and a Model Driven Framework, OpenXava [5] in this case. The result is that with less code, and less time you obtain a more powerful application. Ruby and rails: The regressive framework Ruby on rails [6] is so elegant, so easy, so productive. I cannot avoid read and heard continuously these comments. For example, the article Rolling with Ruby on Rails Revisited of Bill Walton says: “What would you think if I told you that you can develop a web application at least ten times faster with Rails than you can with a typical Java framework?” Oops! Ten times faster! Well, after these comments I decided to learn Ruby on Rails. I ne... (more)

The Trials of Software Testing

Software testing while one of the most important tasks done in a development project is often misunderstood and abused by everyone from programmers and managers to testers. Wikipedia calls testing "an empirical investigation conducted to provide stakeholders with information about the quality of the product or service under testing, with respect to the context in which it is intended to operate." This definition, like most that try to make software into a science, is bunk. The definition of testing that I buy and try to instill in others is that testing is done to find bugs in a piece of software before the user does. When a project subscribes to empirical ideology it causes a number of problems. The first is that developers write sloppy code because they somehow feel that testing is something done by others who will use imperfect and fancy overpriced tools to diss... (more)

Oracle Has Made a Big Commitment to Java

Chuck Phillips, president of Oracle, said that Oracle was committed to provide "A Single Stack of Technology to Simplify Enterprise IT". I fundamentally question this premise. In order for a "Single Stack" to successfully simplify IT, Enterprise Software practitioners must commit their entire Enterprise Architecture to a single vendor, namely Oracle. Recall that architecture is a *design* discipline. The absolute underpinnings of design is *intention*. This is a fundamental premise of my book, SOA Adoption for Dummies. http://miko.com/book. Handing your Enterprise Architecture over to Oracle is unrealistic. For end-users who want to capitulate and give up on IT as a provider of competitive differentiation, this might seem like a way of reducing cost and complexity. In the short term, they will be able to reduce their costs by eliminating most of their IT department... (more)

Interviewing Java Developers With Tears in My Eyes

During the last week I had to interview five developers for a position that required the following skills: Flex, Java, Spring, and Hibernate.  Most of these guys had demonstrated the 3 out of 10 level of Flex skills even though each of them claimed a practical experience on at least two projects. But this didn’t surprise me – Flex is still pretty new and there is only a small number of developers on the market who can really get Flex things done. What surprised me the most is a low level of Java skills of most of these people. They have 5-8 years of Java EE projects behind their belts, but they were not Java developers. They were species that I can call Robot-Configurator.  Each of them knew how to configure XML files for Spring, they knew how to hook up Spring and Hibernate and how to map a Java class to a database entity. Some of them even knew how to configure laz... (more)

Sun Was Too Arrogant To Survive

Sure, now that the deed is done and the board has approved the acquisition, there’s lots of Monday morning quarterbacks.  However, in this case, I’m not one of them.  Indeed, I point to the release of my 9/1997 report that I wrote for NC.Focus entitled “State of Java Report: IBM” and the subsequent press release where I assert that IBM is leading in deploying Java in the Enterprise. The story goes somewhat like this.  On the day I released the report, I subsequently released the press release through PR Newswire, but it was also available on the IBM website.  Within hours of posting the press release, IBM was contacted by Sun and told to remove the link to the press release on their website.  Ultimately, Sun did not like the fact that I presented that IBM was doing a better job of monetizing Java in the Enterprise than Sun was, but that was the truth. Now, Sun had ... (more)