Comments
Richard Davies wrote: The UK has a good crop of technology pioneers in cloud computing - for example ElasticHosts, FlexiScale, Flexiant, OnApp - and also some strong government initiatives such as G-Cloud. We will have to see whether this kind of technical leadership converts into swift mass-market adoption or not.
Cloud Expo on Google News

SYS-CON.TV
Cloud Expo & Virtualization 2009 East
PLATINUM SPONSORS:
IBM
Smarter Business Solutions Through Dynamic Infrastructure
IBM
Smarter Insights: How the CIO Becomes a Hero Again
Microsoft
Windows Azure
GOLD SPONSORS:
Appsense
Why VDI?
CA
Maximizing the Business Value of Virtualization in Enterprise and Cloud Computing Environments
ExactTarget
Messaging in the Cloud - Email, SMS and Voice
Freedom OSS
Stairway to the Cloud
Sun
Sun's Incubation Platform: Helping Startups Serve the Enterprise
POWER PANELS:
Cloud Computing & Enterprise IT: Cost & Operational Benefits
How and Why is a Flexible IT Infrastructure the Key To the Future?
Click For 2008 West
Event Webcasts
Combating the 'Object Crisis'
Combating the 'Object Crisis'

Java's phenomenal success as an enabler of enterprise-wide, Web-deployed applications has compelled countless organizations and individuals to seek Java proficiency. Many are drawn like moths to a flame, and in fact go "down in flames." They're ill-prepared to harness Java's power as an object-oriented programming language due to a basic lack of understanding of object concepts.

Many professional software developers schooled only in procedural programming languages are now looking to make the transition from procedural to OO programming with Java. Motivated by career survival, they seek a "quick fix" ­ a single book or course that can transform them into Java-proficient software engineers.

In addition, the relative shortage of Java-trained professionals has led organizations to attempt to mass-produce Java talent by retooling their in-house programming staff in Java. Eager to do so in the quickest way possible, they fall prey to the notion that sending competent programmers to Java training ­ especially C++ programmers, who are presumably already proficient with objects ­ will produce instant "Java savvy."

What these individuals and organizations often don't realize is that:

  • Most Java training does only a cursory job of explaining object concepts. After a perfunctory lesson on what objects and classes are, Java instructors usually dive into the details of Java syntax without giving participants a big-picture appreciation for the nature of objects. Topics key to harnessing the full power of an OO language ­ e.g., encapsulation, information hiding, object collaboration, overriding, polymorphism ­ are merely touched upon in passing, if at all. Students go through the motions of writing Java code "snippets" but often come away without any knowledge of how to structure a software application from the ground up to make the most of Java's OO nature.

  • Not all C++ programmers are object savvy. Many software engineers who adopted C++ years ago were "born-again" C programmers who saw C++ as a "better C." They weren't necessarily compelled to learn the object paradigm beyond a superficial level because they were able to successfully write procedural C++ code upon merely learning C++ language syntax. (Despite many syntactic similarities between the two languages, Java is arguably more true to the object paradigm ­ it provides fewer "back doors" with which a programmer can escape the rigor of objects.) Those C++ programmers who never learned objects properly don't have a leg up learning Java, but organizations unfortunately assume they do.

  • The prevalence of drag-and-drop Java IDEs exacerbates the situation. While such tools allow those without object know-how to craft OO user interfaces, these UIs sit on top of a non-OO infrastructure. Like the Hollywood facade of a town in the Old West, an application built with such an IDE may appear to be object-oriented. Scratch the surface, however, and you'll see the reality ­ there is a noticeable discontinuity between the OO front end and a decidedly non­OO back end. This leads to brittle applications that are difficult to extend and maintain.

    The "object crisis" is by no means insurmountable. By observing a few basic guidelines for how best to retool with objects in general and Java in particular, you can quickly be off to the right start:

  • Invest in object training before Java training: it's like learning how to hold a golf club properly before strategizing how to play a particular golf course. But choose wisely. Make sure that the object training you select doesn't teach objects in isolation ­ it should also illustrate how to bridge the gap between object models and Java code.
  • Craft your own Java code using a bare-bones IDE or simple text editor to master the OO aspects of Java before relying on a drag-and-drop GUI builder to churn out code automatically.
  • Engage a Java-proficient object mentor to work with a fledgling Java team throughout the project life cycle.
  • Tackle a reasonably small project first ­ don't attempt to conquer a major enterprise-level application. Ideally, cut your teeth on an in-house project versus a project-for-hire for a key client.

    The object paradigm is intuitive and powerful...nonetheless, mastery of objects doesn't happen automatically by virtue of learning Java syntax. An up-front investment in learning objects properly will pay for itself numerous times over in terms of the quality, maintainability, and robustness of the resulting Java applications.

    About Jacquie Barker
    Jacquie Barker is a professional software engineer with SRA International.

  • In order to post a comment you need to be registered and logged in.

    Register | Sign-in

    Reader Feedback: Page 1 of 1

    Jacquie Barker is right on the money. Many Java books look like reconfigured Pascal or C books, with new material added for Java. Most wait until you wade through hundreds of pages of material until you see anything about interfaces, inheritance and polymorphism.

    I am in charge of the new CS program at the North Carolina School of Science and Mathematics. We will bulldoze the old curriculum this year and begin Java using an "objects-first" approach. Before learning Java, our student will first be exposed to Python.

    A noted exponent of the objects-first approach is the CS program at Rice University. I attended their workshop this summer and have seen how the interrelationship between objects can handled in an accessible way. Their IDE, DrJava is suited to this purpose. It provides a "language level" feature to insulate the beginner from a lot of syntactic complexity, so the beginner can focus on creating small, coherent classes that work together to do a job.

    This will be an exciting year at Science and Math!

    Tony, the issue that you are describing is not an uncommon one, because most people aren't taught J2EE component technologies (JSPs, servlets, EJBs, etc.) properly; hence, they "sling" code (including HTML, JavaScript, and Java) to build thin-client Java apps, but wind up with a tangled mess when it comes to extensibility and maintainability. Hence, the elegance of objects seems to be lost in the shuffle, which could easily lead one to believe that J2EE isn't object-oriented. However, if properly architected, J2EE solutions EMBRACE objects, whether those objects are simple Java classes, known as "Java Beans", or industrial strength ENTERPRISE Java Beans (EJBs). JSPs and servlets become the "glue", or framework, for instantiating and orchestrating the behaviors of such domain, or business, objects.

    I have just finished developing a new course entitled "Deploying Java Objects" as a sequel to my book, Beginning Java Objects; my new D.J.O. course covers how best to assemble thin-client Java applications to harness the power of objects, in the same way that my B.J.O. book handled the subject with respect to Swing desktop applications. Please see my website, objectstart.com, for details on a soon to be released self-study version of this new course.

    Best Regards,

    Jacquie

    The problem is not merely with the devleopers, and is broader than one might first guess. More than two years ago I approached JDJ, Java Report, Java Pro, and JavaWorld with a proposal to write a series of articles under the banner "Fundamental OO, Perspectives on Java Design and Implementation". JDJ and Java Pro said no. I also proposed the topic for presentations for industry conferences; again, no. Fortunately (for me, anyway), JavaWorld and Java Report did accept my idea, and I've written a number of article for them. I'm also giving a couple of presentations on the lastest Java Jam (part of the Geek Cruises) next week.

    The reason for the rejections? The magazines and conferences were more intersted in publishing and pushing the promises of the lastest buzzwords, encouraging Java developers toward a fomented rush to "master" the lastest API. They reasoned no one needed or cared about why something works, just how.

    Fortunately (for all of us) this may slowly change. Jacquie's book, Joshua Bloch's "Effective Java", and others are promising to bring attention back to the power of fundamental understanding and first principles. I argue that a fundamental understanding of OO is requisite for building solid solutions, as opposed to just a solution.

    And in parting, realize this is not a new problem or issue. Consider this gem from David Parnas (quoted from Fred Brooks' "The Mythical Man-Month", ):

    "Instead of teaching people that O-O is a type of design, and giving them
    design principles, people have taught that O-O is the use of a particular
    tool. We can write good or bad programs with any tool. Unless we teach
    people how to design, the languages matter very little. The result is that
    people do bad designs with these languages and get very little value from
    them."

    -wcpr-

    Jacquie,
    I enjoyed your article, and agree with you, however, I was hoping for some more concrete examples of learning about Object Training. Could you suggest any books or training programs?
    Thanks,
    Alan

    When I wrote my book Understanding Object-Oriented Software Engineering 1996 I thought that the object paradigm was something natural to our mind. (That is, something we were born with). Perhaps that is true but now I know that the object paradigm is definitely NOT something the typical software developer is happy with. I think this is one of the major reasons to why Smalltalk never became THE object-oriented programming language for example. Unfortunately most companies look for that "quick fix" but there just is no such quick fix. What can then be done? In my book I warned that there would be those that would never learn to use the object paradigm. That is, those that cannot learn the object paradigm should not work with code where understanding that paradigm is important. Secondly, we must give people time to learn the object paradigm before they start working (for example) with java. This will take time for all but those few natural talents that do have this paradigm already "set in their brains". The best way to start this learning is still by using Smalltalk! Other advice such as having an experienced object mentor also applies of course. Finally, perhaps the most important advice is to be aware of the problem and together with the object mentor plan how an application shall be developed (team members, development phases, application architecture etc)

    [Understanding Object-Oriented Software Engineering, IEEE 1996; based on investigations and experience from Sweden 1990-1995; Now out of print]

    Absolutely right, Jacquie. However, I wonder if there is another factor. New Java technologies appear to be springing up all of the time. I'm pretty much a core Java developer but stuff like EJB (before 2.0), servlets, JSF, struts and the like, don't seem to be very object oriented. Maybe getting those new Java developers to think objects will be even more difficult than you think.


    Your Feedback
    John Morrison wrote: Jacquie Barker is right on the money. Many Java books look like reconfigured Pascal or C books, with new material added for Java. Most wait until you wade through hundreds of pages of material until you see anything about interfaces, inheritance and polymorphism. I am in charge of the new CS program at the North Carolina School of Science and Mathematics. We will bulldoze the old curriculum this year and begin Java using an "objects-first" approach. Before learning Java, our student will first be exposed to Python. A noted exponent of the objects-first approach is the CS program at Rice University. I attended their workshop this summer and have seen how the interrelationship between objects can handled in an accessible way. Their IDE, DrJava is suited to this purpose. It provides a "language level" feature to insulate the beginner from a lot of syntactic complexity, so the...
    Jacquie Barker wrote: Tony, the issue that you are describing is not an uncommon one, because most people aren't taught J2EE component technologies (JSPs, servlets, EJBs, etc.) properly; hence, they "sling" code (including HTML, JavaScript, and Java) to build thin-client Java apps, but wind up with a tangled mess when it comes to extensibility and maintainability. Hence, the elegance of objects seems to be lost in the shuffle, which could easily lead one to believe that J2EE isn't object-oriented. However, if properly architected, J2EE solutions EMBRACE objects, whether those objects are simple Java classes, known as "Java Beans", or industrial strength ENTERPRISE Java Beans (EJBs). JSPs and servlets become the "glue", or framework, for instantiating and orchestrating the behaviors of such domain, or business, objects. I have just finished developing a new course entitled "Deploying Java Objects" as a s...
    Wm. Paul Rogers wrote: The problem is not merely with the devleopers, and is broader than one might first guess. More than two years ago I approached JDJ, Java Report, Java Pro, and JavaWorld with a proposal to write a series of articles under the banner "Fundamental OO, Perspectives on Java Design and Implementation". JDJ and Java Pro said no. I also proposed the topic for presentations for industry conferences; again, no. Fortunately (for me, anyway), JavaWorld and Java Report did accept my idea, and I've written a number of article for them. I'm also giving a couple of presentations on the lastest Java Jam (part of the Geek Cruises) next week. The reason for the rejections? The magazines and conferences were more intersted in publishing and pushing the promises of the lastest buzzwords, encouraging Java developers toward a fomented rush to "master" the lastest API. They reasoned no one needed or cared ab...
    Alan Wagoner wrote: Jacquie, I enjoyed your article, and agree with you, however, I was hoping for some more concrete examples of learning about Object Training. Could you suggest any books or training programs? Thanks, Alan
    Stefan Sigfried wrote: When I wrote my book Understanding Object-Oriented Software Engineering 1996 I thought that the object paradigm was something natural to our mind. (That is, something we were born with). Perhaps that is true but now I know that the object paradigm is definitely NOT something the typical software developer is happy with. I think this is one of the major reasons to why Smalltalk never became THE object-oriented programming language for example. Unfortunately most companies look for that "quick fix" but there just is no such quick fix. What can then be done? In my book I warned that there would be those that would never learn to use the object paradigm. That is, those that cannot learn the object paradigm should not work with code where understanding that paradigm is important. Secondly, we must give people time to learn the object paradigm before they start working (for example) with java....
    Tony Weddle wrote: Absolutely right, Jacquie. However, I wonder if there is another factor. New Java technologies appear to be springing up all of the time. I'm pretty much a core Java developer but stuff like EJB (before 2.0), servlets, JSF, struts and the like, don't seem to be very object oriented. Maybe getting those new Java developers to think objects will be even more difficult than you think.
    Latest Cloud Developer Stories
    Rackspace Hosting, the service leader in cloud computing, on Thursday announced its acquisition of SharePoint911, an industry leader in SharePoint consulting, training, and "JumpStart" services within SharePoint. The unification of both companies provides capabilities to deliver ...
    With Cloud Expo 2012 New York (10th Cloud Expo) now under four months away, what better time to start introducing you in greater detail to the distinguished individuals in our incredible Speaker Faculty for the technical and strategy sessions at the conference... We have techn...
    Nimble, the social CRM platform has announced the launch of Nimble 2.0, billed as the “most social” CRM platform on the market today. Nimble was designed entirely with social CRM in mind and is the first social business platform that empowers companies with the ability to get clo...
    2011 was a year of rapid adoption for public and private cloud services. Instant and on-demand server provisioning was the driving force behind the massive growth. On top, cloud server templates and script automation simplified application installation for simple and pre-defined ...
    "Having been in the IT field for many years, I believe the cloud computing chapter in the industry is an exciting one and I am proud to be a part of it," said National Reconaissance Office (NRO) Chief Information Officer Jill T. Singer Tuesday, as it was announced that she was on...
    Subscribe to the World's Most Powerful Newsletters
    Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
    Click to Add our RSS Feeds to the Service of Your Choice:
    Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
    myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
    Publish Your Article! Please send it to editorial(at)sys-con.com!

    Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021

    SYS-CON Featured Whitepapers
    ADS BY GOOGLE