Sunday, December 31, 2006

Year 2007: My Self-Study Goals

In the past year of 2006, i underwent 4 Sun certifications (that includes Java SE 5.0 programmer, J2EE 1.4 Webservices developer, J2EE 1.4 Web component developer and J2EE 1.3 Business component developer) and 2 trainings ( Oracle workforce development program's Introduction to Oracle 9i SQL and Program with Oracle 9i PL/SQL). In short, i invested a lot of effort and time in learning of Java EE based enterprise application development, which became the major focus for me last year. I wanted to cover every aspect of web application development in my learning, right from CSS, JavaScript, Ajax, XHTML on client tier to Servlets/JSP/Struts 1.2 on Web tier to EJB 2.x for Business tier and lastly, relational database SQL and PL/SQL on EIS tier. I also covered Webservices (in great details) which has become a very important tool for A2A (ie EAI) and B2B integrations. Learning of Webservices and my score of 88% in SCDJWS 1.4 exam really makes me feel good as i have felt that Webservices will be a good substitute for SNMP in the network management domain (the domain in which i continue to specialize).

This year (2007) i intend to continue with learning of EJB 3.0 and JSF 1.2 to begin with. I have also started a project BaseApp (a kick-starter application for development using Java EE 5.0). I also have intentions to learn a bit about JBoss Seam framework (since its on standards track and is a framework built around EJB 3 and JSF). I also think that EJB 3 and JSF 1.2 together with up coming Web beans (or current JBoss seam) will be a strong (and standard) contender to Spring framework. So i will be focusing a lot on Java EE this year too.

Also the goal will be complete BaseApp. For now, baseapp happens to be open ended enterprise but we will soon be defining the requirements for the first release formally.

A few things i missed to complete last year are the reading of,
  1. H F Design patterns
  2. JUnit in Action
  3. J2EE Design and Development
  4. H F HTML with CSS & XHTML
  5. Get SCEA certification
  6. BPEL and WSDM/WS-Man
  7. Ruby/Perl
I think with work and the above tasks identified, i will have enough on my plate for this year.

Friday, December 29, 2006

EJB3 development using JBoss 4.0.5.GA

I encountered an issue today while redeploying EJB 3 jar for hot deployment to JBoss 4.0.5.GA which i installed using the JEMS installer 1.2.0 CR1. The issue and the resolution is mentioned here. You will need to install the JBoss EJB 3 RC 9 Patch 1 to fix it. For EJB3 development with JBoss 4.0.5.GA, you must use the JEMS installer only and not the archive releases.

I continue to see the issue of Wrong target message being thrown and the workaround for now is to restart the JBossAS which fixes the issue. EJB 3 RC 9 patch 1 does not do anything to solve this issue (and i found that one of the issues marked as dependent to this issue has been reopened recently). So expect a fix only by early Jan 07. For now reboot is the best bet.

Also i found that you need to have JSE 5.0 only to run your application. Even though the docs say that JDK 1.5+ is supported but you get a strange issue of "Could not dereference object" on deployment of Stateful session beans (see this). So i had to change back from JSE 6.0 to 5.0 in Eclipse.

At one point i really was planning to switch from JBoss to Glassfish :). But for now it seems i am back on track with some workarounds to continue my learning of EJB 3 using JBoss AS.

BTW, Mikalai Zaikin's notes on SCBCD 5.0 exam has a very nice appendix/tutorial (replete with screen caps) for how to develop using JBoss 4.0.5.GA + Eclipse 3.2.1 + WTP 1.5 + JBoss IDE 2.0.0.Beta 2. What's missing is how to use hibernate entity manager JPA implementation for RESOURCE_LOCAL transactions in a JSE standalone application. You will find this documentation useful for this.

If you are planning on using JBoss AS for a green field (from scratch) EJB 3.0 project and Eclipse is your IDE of choice, then you can find the instructions at following URL useful:
Eclipse + JBoss AS + EJB 3.0 setup instructions by Eric Garrido
Starter Skeleton Eclipse Project on JBoss Wiki site

Wednesday, December 27, 2006

Web Beans: JBoss Seam being standardized for Java EE 6 release

Web Beans JSR 299 proposal by JBoss (RedHat Middleware LLC) has been approved unanimously by the JCP executive committee even though IBM and BEA Systems have expressed their concerns regarding it being (too?) ambitious. Following is what they had to say:

------------------------------------------------------------------------------
On 2006-06-05 BEA Systems voted Yes with the following comment:
This appears to be a sufficient challenge to achieve, but, in light of the overwhelming support at this stage of the process, we are prepared to see it go ahead.
------------------------------------------------------------------------------
On 2006-06-05 IBM voted Yes with the following comment:
Delivering on the deep level of integration that is proposed appears to be an ambitious task.

In short, the goal of this initiative is: to enable EJB 3.0 components to be used as JSF managed beans, unifying the two component models and enabling a considerable simplification to the programming model for web-based applications in Java.

The benefit will be: this work will provide a programming model suitable for rapid development of simple data-driven applications without sacrificing the full power of the Java EE 5 platform. This is a domain where Java EE has been perceived as overly complex.

Gavin King (Hibernate founder) is the spec lead for this effort which is targeted for release of a RI with Java EE 6 (fall 2007). This is also the first time that JBoss is leading a standard spec.

Some links to learn more about what Web Beans will offer are:
Gavin's interview by InfoQ on JBoss Seam
Proposed spec description for JSR 299
What Matt Raible (author of Spring Live and AppFuse founder) said about Seam
The JBoss Seam Demo
The JBoss Seam Documentation
JBoss Seam FAQ

What excites me?
Seam is an ambitious full stack framework (unifying and integrating technologies such as Asynchronous JavaScript and XML (AJAX), Java Server Faces (JSF), Enterprise Java Beans (EJB3), Java Portlets and Business Process Management (BPM)) which enables EJB 3.0 components to be JSF managed beans. So your EJB 3.0 beans could become your Action classes and the glue code which was required earlier for enabling Actions to invoke methods on beans in the business tier will go away thus simplifying the development effort required.
Some specifics from the proposal as quoted by Floyd Marinescu at InfoQ are:

  • Changes to EJB 3 that will be needed for EJB's to act as JSF managed beans.
  • Annotations for manipulating contextual variables in a stateful, contextual, component-based architecture.
  • An enhanced context model including conversational and business process contexts.
  • Extension points to allow the integration of business process management engines.
  • Integration of Java Persistence API extended persistence contexts. (The other type of persistence context is transaction-scoped persistence context.)
Now thats what makes Web Beans a full stack framework! :) Here's one Seam Book by JBoss insiders.

Some notable aspects of Seam:
  1. State management: Most other web frameworks store all application state in the HTTP session, which is inflexible, difficult to manage and a major source of memory leak. Seam can manage business and persistence components in several stateful scopes: components that only need to live across several pages are placed in the conversation scope; components that need to live with the current user session are placed in the session scope; components that require interactions from multiple users and last extended period of time (i.e., survive server reboots) are placed in the business process scope. The advanced state management facilities allow us to develop web application features that are previously not possible, or very difficult, to implement.
  2. Multiple browser windows/tabs: Seam supports fine-grained user state management beyond the simple HTTP session. It isolates and manages user state associated with individual browser window or tab (in contrast, HTTP session is shared across all windows of the same browser). So, in a Seam application, each browser window / tab can become a separate workspace that has independent history and context. Multiple user "conversations" can be supported for the same browser. This behavior is similar to that in rich client applications.
  3. Handling back-button navigation: Seam's nested conversation model makes it really easy to build complex, stateful applications that tolerate use of the back button.
  4. Support for REST style bookmarkable URL: it is very easy to expose REST style bookmarkable URLs in a Seam application. In addition, the Seam application can initialize all the necessary backend business logic and persistence components when the user loads that URL. This way, the RESTful URL is not only an information endpoint but also an application interaction start point.
  5. Support for JSR 168 portlets.
  6. Support for internationalization.
  7. JBoss Eclipse IDE provides a sophisticated, template-driven database reverse engineering tool which can generate an entire Seam application in minutes and a graphical jPDL editor for editing Seam pageflows and workflow definitions.

Friday, December 22, 2006

Sunday, December 10, 2006

Using Subversion for your open source project



Subversion has been an open source contribution by CollabNet folks which improves over CVS. The Subversion project started in earnest in February 2000, when CollabNet offered Karl Fogel a full time job developing a replacement for CVS. Karl Fogel and Jim Blandy had previously founded Cyclic Software which provides commercial support for CVS. Subversion was designed from the ground up as a modern, high-performance version control system. In contrast to CVS, which had grown organically from shell scripts and RCS, Subversion carries no historical baggage. Subversion takes advantage of a proper database backend (Berkley DB), unlike CVS which is file based. The Subversion team have tried to make the new system similar in feel to CVS, so users are immediately at home with using it. Most of the features of CVS including tagging, branching and merging, are implemented in Subversion, along with host of new features:

  • versioning support for directories, files and meta-data
  • history tracking across moves, copies and renames
  • truly atomic commits
  • cheap branching and merging operations
  • efficient network usage
  • offline diff and revert
  • efficient handling of binary files

Salient points about Subversion:
  • Subversion is a centralized client-server version control like CVS, VSS or Perforce.
  • Advanced network layer: the Subversion network server is Apache, and client and server speak WebDAV(2) to each other. This gives Subversion an advantage over CVS in interoperability, and provides various key features for free: authentication, wire compression, and basic repository browsing.
  • It's free: Subversion is released under an Apache/BSD-style, open-source license.
  • Like CVS, Subversion has a concept of a single, central repository (often residing on a dedicated server) that stores all data about the projects you are working on. This data is called a repository. You never work in the repository directly, though. Instead, you pull subsets of it into working copies that typically reside on other systems such as your desktop computer. In these working copies, you make your changes, and when you are pleased with them, you commit those changes into the central repository where they become once and forever part of history.
  • Each commit (also called a check-in) to the repository is called a revision, and, in Subversion, revisions are numbered. A commit can be a change to one file or a dozen, to directories, or to metadata.
  • We speak of HEAD when we mean the latest version of the repository; so, when you check in revision 17, then HEAD is revision 17.
  • Atomic Commits: In Subversion, a commit is an atomic operation, meaning it either succeeds entirely or fails entirely; unlike CVS, you can't end up with half of your files saved to the repository but the other half unchanged.
  • Not only does Subversion offer version control of files and directories, it also offers version control of metadata. In the world of Subversion, such metadata is called a property, and every file and directory can have as many properties as you wish. You can invent and store any arbitrary key/value pairs you wish: owner, perms, icons, app-owner, MIME type, personal notes, etc. This is a general-purpose feature for users. Properties are versioned, just like file contents. And some properties are auto-detected, like the MIME type of a file (no more remembering to use the -kb switch).
To read about a quick intro to the setup of a local subversion repository (ie svnadmin create) and how to use the basic svn client commands (checkout, status, commit, update, log, diff, mv, rm, merge, stat, up etc) read this article by Chip Turner. The complete manual for different subversion releases are available too.

If you already have worked with CVS, and you have the option to choose a SCM tool for your project then its better to start with Subversion as it improves upon CVS in several ways. Also the client commands are similar to CVS thus enabling easier migration. Several tools/scripts/IDE plugins/GUI Clients for subversion are now available and mentioned here. Google Code free project hosting and collaborative development site, uses subversion as its version control server.

I have been introduced to subversion in one of my project works in the year 2004 at Hewlett Packard. HP used CollabNet for most of its projects for collaborative development across HP sites and we used to use the Subversion client Tortoise SVN which integrates with Windows explorer. Back then the tortoise svn was still not stable enough and made the particular working directory (copy of the repo) in windows explorer very slow to navigate. So we mostly used the command line client then. For BaseApp, i chose google code project hosting service as it seems to be the most intuitive and easier to get started with than sourceforge.net. Google code project hosting service provides a issue tracking service and a SCM service. Google also provides free discussion forums for your projects from its Google groups. So, with BaseApp, i am back to using Subversion (and this time around i hope the GUI clients will be helpful and not make me go back to command line tools).

Friday, December 08, 2006

Starting BaseApp

I have decided to start an open source project - BaseApp. The project is hosted on Google Code site. A new project blog is started where project activity will be logged.

Objective is to come up with a foundation application which can be leveraged to build web applications quickly in J2EE 1.4 (in the likeness of AppFuse). Most of the commonly used feature will be made available (like form based authentication support, netbeans project enabled, custom ant build file created etc). A sample application source will be provided which will use the following frameworks/toolkits as reference implementation:
  • Oracle 10g XE (the database i will use for testing)
  • JBoss 4.0.4GA (the Application server)
  • Struts 1.2.9 (the web tier framework)
  • Hibernate 2.x (the presentation tier framework)
  • XDoclet 1.2.3 (the attribute oriented programming support library)
  • EJB 2.1
    • Stateless Session Beans (J2EE 1.4) (synchronous request/response)
    • Message Driven Beans (J2EE 1.4) (asynchronous)
  • JAX-RPC 1.1 (webservice support)

Wednesday, December 06, 2006

Choosing your Linux distro

You can find a good comparison between any two Linux distros at http://polishlinux.org/choose/comparison/. For eg, this url compares the Ubuntu with Fedora core.

EasyUbuntu is an easy to use (duh!) script that gives the Ubuntu user the most commonly requested apps, codecs, and tweaks that are not found in the base distribution - all with a few clicks of your mouse.

Sunday, December 03, 2006

Java vs .NET

I recently attended a presentation talk by a .NET developer in my team at workplace where he talked about the reasons why he thought M$ .NET is better than Java EE. Following were the points raised by him together with my views on them:
  • Java is slow in performance (both on server-side and rich client) as compared to .NET.
I found this blog post which presents some stats which clearly show that Java (JRE 1.4.2) was more performant than CLR (.NET 1.1). But C# IL when compiled to native code using Ngen.exe did significantly improve performace. Here's another interesting article i could find which compares the Java 5.0 with .NET 2.0 (the two latest releases of the competing platforms as of this writing). The summary from the article is as follows:
    1. Selection Sort algorithm implementation : .NET performs faster by 2:1 as compared to Java.
    2. Memory comparison: .NET is using more than twice the amount of memory Java uses to store the same amount of data – 19.9 MB versus a whopping 47.8. Since .NET treats native types – such as double – as objects, that this incurs additional overhead of some form. Java, on the other hand, does not treat native types as objects and therefore can save on this overhead. However, when it comes to real-world object allocation, it appears that .NET is more efficient.
    3. Conclusion: Thus, as we have seen, .NET 2.0 won 2 out of the 3 major tests – clearly besting Java 1.5 in both execution speed and real-world memory efficiency. Java did, however, manage to hold its own in the native types memory comparison by a pretty wide margin. This indicates that on the whole .NET is a more efficient platform, with perhaps at least one area for improvement – native type memory efficiency.
  • The Java Swing UI looks and feels ugly.
Good examples of better looking Swing UIs do exist like Netbeans IDE and that of SWT like Eclipse. Still Java does lack on the UI front hands down to MS .NET Winforms as the later looks, feels and responds better and is easier to program. The only reason why you may at all want to use Swing/SWT is portability across platforms.
  • There are too many options in Java to choose from (like Swing/SWT for UI development, Struts/Tapestry/Velocity etc for Web framework, Spring/EJB/xWorks for business tier, IDEA/Netbeans/Eclipse for IDE) and this requires developers to learn more than one way of doing the same thing.
This is debatable topic as having options to choose from is exactly what standards are meant for. So if you have a J2EE application which complies with the standards then you can easily port the application across multiple J2EE application servers, hence removing the risk of vendor lock-ins. Also, it fosters innovations at multiple quarters and there is no one organization dictating the terms in the best of its own interests.

The reason there are many more Java frameworks out there is simply because Java has been around longer, enough to have several good frameworks mature and spread. Many of those are being ported to .NET and others will rise up.
  • You can only program in Java whereas .NET supports multiple languages to run on its CLR.
Multiple languages can be compiled to produce byte code that runs on JVM. See this list.

In short, .NET has managed to surpass Java VM in performance and the cost involved in procuring the tools for development in .NET is not a factor against MS .NET (as investing in the tools for development is only 20% of the total cost of development). But ...
  1. Java is portable and you can run it on Unix servers (Unix remains the server of choice for production deployments in most cases).
  2. Java EE has matured over time and has more developer mind-share (about 4 million Java developers as in 2004).
  3. There is alot of investment in Java today and many big companies like Sun, IBM, BEA, Oracle has vested interest (tools, AS, support & services) in not letting the technology go to dust.
  4. Sun's open sourcing Java SE (under GPLv2) will enable JDK to be bundled with major Linux distros which in the past have not been able to do so due to licensing issues.
  5. There are more than 200 models of mobile phones which run Java and several wireless providers across the world provide Java content to such Java enabled phones. On the contrary there are only 10 or so Windows mobile phones today (this i read from some site i cannot find out now).
Quoting from a blog post:
.NET had many missing parts that the Java world has filled in its years of existence, but these are being filled and completed even as we speak. Moreover, these are usually fixed in ways compatible with the original Java implementations - moving from JUnit to NUnit or from Spring to Spring.NET (or the other way around) is probably easier than from totally disparate implementations.

In some areas, .NET is still lagging behind. COM+ is the only application server I know of that can run .NET components, and it's often overkill. A more flexible solution for that in the .NET world would be great. The .NET solution biosphere is still not as mature as Java, but what it does, it does very well - often better than the original Java product.

How does Sun make money off of Java?
  1. J2ME royalty earned (by Sun) per Java mobile phone sold (less than $1) remains a cash cow for Sun to date.
  2. Also Sun sells certifications to Java EE application server vendors for their compliance to the Java EE Specs.
  3. Sun also makes money by selling books, certifications and trainings for Java technology.
  4. Sun provides consulting services for Java enterprise application development.
  5. Sun also sells its hardware (server boxes) together with Solaris OS for deployment of Java enterprise applications in production.
By giving its JDK implementation and developer tools for free, Sun wants to increase the mind share for Java platform (and now more so as it has .NET to compete against) among the developer community. Sun gives developers Reference implementations for free to try out the technology and when the developers have got a production ready application then they (or their organization) would want to deploy the application on a supported server host which cuts down on the organizations TCO in the long run. Thats the model in which open source or free software businesses survive in today's software industry.

An interesting article with more statistics concludes that Java is loosing ground to LAMP and .NET for web application development. More and more corporations have adopted .NET since its easier and faster to program in than Java. .NET is gaining on developer mind share too.

I don't know how credible are the stats presented in the articles (i have found on the web and linked to above) or whether someone is funding a malicious propaganda against Java as i donot see how anything can beat free (free IDE, even AS, and you pay for a short-term support and you go live with Java). Of course, PHP has gained ground for building small websites and applications but when the applications are big then Java holds good steed. In my opinion, Java and .NET are both competent platforms for developing enterprise applications and both have their own pros and cons to be considered when a decision is being made on which platform to develop on. BTW, here are a few comments which i liked (by one Mr. Abdul Habra) refuting the claims made in the business week article:
I do not know where to start, look at these statements:

1. LAMP is used more than Java: a more accurate comparison is to compare LAMP against LAMJ or P against J. Java is used widely with LAM components.
2. PHP is used more than Java: Well, HTML is used more than both. Counting all the sites that use Java or PHP is meaningless. It is given that there are more basic, simple, or home pages than there are professional complex site. Simple sites are more likely to be written in PHP. This is similar to saying there is more printed material in the USA Today than for Shakespeare, hence USA Today must be better.
3. Sales Of AJAX books grew more than Java: The term AJAX did not exist two years ago, so selling 10 books compared with 0 books two years ago means that AJAX sales have grown infinitely. The other flaw in this argument is that many of the AJAX frameworks are Java based. This is like saying the sale of JDBC, JMX, … grew more than Java. Look at http://adaptivepath.com/publications/essays/archives/000385.php for the first public article of AJAX, it is dated Feb 18 2005.
4. Google and Yahoo do not use Java: Both are C++ shops. Their usage of AJAX is with C++/Java at the backend. Remember, Google hired Josh Bloch not for his PHP skills.
5. Merrill Lynch & Co ... using just Linux and the Apache server: So what language do they use? The author does not say. Clearly you cannot write programs with Linux and Apache, you need a programming language. This is a meaningless statement.
6. Jupiter Research report showed that 62% of ... .NET, vs. 36% for IBM's WebSphere: This only shows that .Net is used more than WS. It does not count WL, Tomcat, JBoss, ...

In conclusion, this is not new. I have been seeing this since Java became popular. Most of these claims are made by ignorant people or people with hidden agendas.

Thursday, November 16, 2006

Convergence of WS-Management and WSDM

JSR-262 which addresses support for Webservices Connector for the JMX Agents, is targeted for Java SE 7 (2008 spring). There are currently two competing webservices-based management standards: WS-Management and WSDM. There is currently an effort in progress to reconcile the two standards into one. But this reconciliation effort is going to take sometime to complete (and the guesstimate is it can be ready by 2008). The bottom layers of the convergence proposal are the existing standards WS-Transfer, WS-Enumeration, and WS-Eventing. JSR-262 chose to implement the Webservice connector using the existing WS-Management standard primarily because it seems to be the most backwards compatible approach possible. For reasons, read here. The idea behind this JSR-262 effort of providing a Webservice connector to the JMX agents is to enable management in hetrogeneous environments where the management host does not support JMX technology (say a management client written in C#). So once your JSR-77 MBeans are exposed via a JSR-262 Webservices connector, you could write a perl or ruby or C# client to talk to the MBean.

Recently after having passed the Sun certified developer for Java Webservices exam (CX-310-220) i wanted to use my learning of webservices building blocks to learn further on how webservices could be used for network management. I have learnt about such a possibility when i was working with HP when they decided to embed the webservice called IXA (XDM Access interface) [XDM means XML data model] in the firmware of the network module for printers. This approach had a strong group of supporters within HP. Till the time i was working with HP, they had already implemented the read-only interface to part of the management objects. And i found that even though it was easier to understand the benefits of this approach to managing the printers (over the traditional SNMP way), implementation was challenging stuff primarily because of less education among the firmware developers for technologies like XML namespaces, schema, etc. But the message was clear to me that sooner than later, webservices will surely be the way to manage the network elements and services. I will blog separately on the advantages of Webservices over traditional approaches like SNMP. For the moment, i just needed to highlight the fact that the webservice-based management specs are still far from final and by the year 2008 we should see some devices and servers implementing support for the webservices way of management. Atleast for Java App Servers, it is clear that JSR-262 will evolve then to support the then latest spec of converged WS-Man and WSDM standards. So for folks (like me) who want to specialize in systems management domain, will certainly want to track the progress of this convergence. IBM maintains the convergence progress drafts at its site.

Wednesday, November 15, 2006

Sun Announces SCBCD 5.0 Beta

Sun has announced SCBCD 5.0 Beta exam on October 19th it seems. It does not require one to purchase a voucher to take a beta exam. Registration starts on 24th Nov, 2006. You can take this exam from 8th Dec, 2006 to 2nd Jan, 2007. The exam objectives are here. The only pre-requisite is you need to be an SCJP (any edition).

The recommended books/tutorials to cover the objectives for this exam are:
1. Mastering EJB 3.0 by Rima Patel Sriganesh, Gerald Brose, Micah Silverman.
2. Java EE 5.0 tutorial
And of course the specs .. the list of them is mentioned here.

Register early as there is a limit to the number of people who can take the free beta exam.

Monday, October 30, 2006

Easy Eclipse Distro

For all you eclipse fans, there is a good distro for eclipse available (called Easy Eclipse) aimed at making the installation easier for eclipse. It has a pre-zipped bundle of plugins and all version dependencies are taken care of plus there are separate versions depending on what you need eclipse for (making Swing/SWT apps, server-side programming, mobile application development, etc). In my own experience, knowing what plugins to install to say start/stop tomcat or weblogic server or to support javascript or xslt editing is a manual process and complicated by the issues involved with version dependencies. With Easy Eclipse, the job of identifying the right plugins has already been taken care of and you can start using eclipse in all its glory right after the install.

12/27/06: I used the EasyEclipse Server Java 1.2.1 distro yesterday for setting up my development environment for learning EJB 3.0 with JBOSS 4.0.5 GA. And this distro installs JBoss Eclipse IDE with Eclipse 3.2.1 platform and several other goodies (Subclipse for subversion support, Web tools 1.5 which also brings in J2EE perspective, etc.).

Friday, October 27, 2006

Joy of Tech - Linux Lovers

When i bought my present PC for home, it came with Turbo Linux distribution. The PC is a Compaq make with AMD XP 2400+ processor. It was 2004 July when i bought it. I first decided to keep the Turbo Linux distribution. Later i experimented with a few more distributions (Fedora Core 2, SuSE 10.x, RH 9). It was a good setup and i was gradually getting used to the habit of doing common things from command line (like playing music using mplayer). It was a dream like phase for me as i saw the developer tools which came free (vi, xemacs, and GNU GCC toolchain, linux kernel sources) and felt very passionate about someday becoming a linux systems programmer geek :). Those days i used to be learning unix systems programming, linux kernel development and fundamentals of embedded systems programming - all of it in self-taught way. I read some books then like - Linux Kernel Development by Robert Love, Advanced Programming in the Unix Environment (almost completed it) by R Stevens, An Embedded Software Primer by David E Simons and some books i started but did not complete like Fundamentals of Embedded Software Development (read only first few chapters) by D Lewis and Assembly Language Step-by-Step: Programming with DOS and Linux (only read half of it) by Duntemann. That phase did not last very long with me (wanned in about six months) as i found that i could teach myself to program in assembly using the nasm assembler for x86 even on Windows using the DJGPP port of GCC plus i was more used to Windows as a user, and whatever the Geeks of the world have to say, Windows appeared to be more stabler an option when running RAD tools (IDEs) and other daily use applications (browsers like firefox and opera, email clients, chat applications etc). I lost my patience with Linux desktop at home and bought and installed WinXP Home edition.

Now, i feel i need a Linux system (systems programming, driver development) preferrably Kubuntu distribution, together with a Windows system (for email, chat, java dev etc). At work for the last one year i have not used any unix so i miss my Linux setup at home sometimes. Upgrading my present system with another hard disk where i can install linux is one possibility or will get another system (this time a laptop when i have the dough :) and install both win and linux in dual boot partitions. Ubuntu linux is good choice (as its all fats removed distribution of linux) with only the essential software (no more 3 word processors, 4 media players, 3 browsers etc as is still common with many other linux distros). Read more on the latest Ubuntu 6.10 Edgy Eft release.

Friday, October 20, 2006

SCBCD likely to be updated for EJB 3.0

On a post in Javaranch.com, Valentin Crettaz commented that SCBCD is likely to be updated for EJB 3.0 and the new exam will be available by early next year (ie 2007). Of late, many have posted on Javaranch on whether its wise to take the present SCBCD exam (viz aligned to J2EE 1.3 version of EJB Spec 2.0) or wait for the upgrade when the exam aligns with Java EE 5.0 version of EJB Spec 3.0. Now the same question is being asked about the present SCDJWS 1.4 exam (aligned to J2EE 1.4 version of WS specs). Sun has made some major architectural changes to the erstwhile JAX-RPC 1.1 (so much so that the new stack is called JAX-WS 2.0) and also the other standards have evolved in the due course (like SOAP 1.1 obsoleted bySOAP 1.2, WSDL 1.1 obsoleted by WSDL 2.0 etc). But experts at Javaranch feel that an upgrade to the present SCDJWS 1.4 will take some time (it may even be upgraded by Java EE 6.0).
In my opinion, those planning to take SCBCD 1.3 may want to wait for the newer version of the exam as its just around the cornor now. For those who planned to take SCDJWS 1.4, they need to take it now and upgrade whenever the later version becomes available. From my experience, the person taking this exam will definitely benefit from his learnings of even an older version of Spec as the newer specs in general have evolved in a backward compatible manner.

The architecture and design of webservices application has remained unaffected. And even the most hit aspect of the exam, JAX-RPC (viz is about 30% of exam) continues to be used in the industry today.

Also, there will be alot of work aimed towards upgrading the older EJB 2.0/2.1 app to EJB 3.0 and a JAX-RPC 1.1 client/service to JAX-WS 2.0. And to do such a work, one will require not only the knowledge of EJB 3.0 or JAX-WS 2.0 but also of the earlier version viz the source of upgrade.

Friday, October 13, 2006

$100 MIT Laptop



Seen above is the $100 laptop for kids in the third world countries. Dont you find its amazing ! And our Indian govt. said no to it.

More info regarding this laptop can be found at : http://laptop.media.mit.edu/.

My views: In my opinion, rather than simply writing off the $100 laptop the indian govt could have atleast introduced these to those children who dont sit under trees and do have a proper school where they could have used the laptop as a device to learn from better (and more funnier than their books). Many children in india leave education only because they never found studies interesting enough. I have seen child labors in my own state Bihar, India, where they chose to opt out of school just because they did not find it fun and so spent time away from school bunking classes. Providing those children with an interesting electronic device and showing them how to use it is all that will be needed to get them started using it. Also even if 10% of children pick up the basics, the knowledge will spread among the remaining like fire in the jungle (you know how children are! and laptop is not only ebooks - its games too :)) - and over time the mission (to spread literacy) will be accomplished.

Also programmers like Linus Torvalds have attested to the fact that he has been able to accomplish most in the computer science arena mainly as he started pretty early (Read the answer of Linus for how he learnt to program). I quote:
"I didn’t learn programming in school, but mostly on my own reading books and just doing it (initially on a Commodore VIC-20, later on a Sinclair QL)." - Linus Torvalds.

And to answer the question on what he (Linus) thinks makes some programmers 10 or 100 times more productive than others:
"I really have no idea. I think some people are just better able to concentrate on the things that matter, and I think a lot of it is just doing it. Most of the really good programmers I know started doing it fairly young." - Linus Torvalds.

So the point i am driving at is let them (the children) have an opportunity to get started with technology early in their lives. And thus, they can themselves be able to shape their lives based on what interests them most. Empower them by just providing them the right tools to learn the fun way. Note, laptops are not as dry as books and even a child who gets really interested in playing games may end up writing one some day just because he got too interested in knowing how the game thing works (you know children how they are!).

If Indian govt can invest in crores to buy more arms to make the nation feel safe, then its high time they start thinking on how to build the nation by spreading means of education among the populace. Why we want literacy afterall! Its because it enables the citizens to be educated enough to act responsibly.

Still many children born to poor families living in towns dont get to use a computer just because their parents cannot afford to buy one for them. If a laptop is cheaply available then atleast (like a mobile phone or television became a household item for even a rickshaw puller) parents can provide their children with the device to learn from the fun way. And you never know how many get sincerely attached to their devices and start bringing to our world more innovation. I sincerely feel that we must let this device be introduced in developing countries with rising population as this can serve as a medium to get free ebooks and in general to get the children interested earlier in electronics and reading.

Tuesday, October 10, 2006

Reading of SNMP, SNMPv2, SNMPv3, and RMON 1 and 2 Third Edition by William Stallings

I have started reading this book on SNMP by William Stallings recently. I have read just 6 of 17 chapters till now. What i wanted was a complete but simplified (than RFC's) write up on SNMP protocol and some of the standard MIBs. I have worked in SNMP for almost 7 yrs now and whatever i learnt was on-the-job. So i needed one book which puts together the different pieces of information pertaining to SNMP-based network management in a coherent form. Much of what i read in this book is what i already knew but reading it from a book gives a different perspective. Like for eg, sysUpTime can be used to deduce if the agent has been restarted since the last poll or that the ifAdminStatus reflects the value set by management station to change the operational state of the interface but ifOperStatus reflects the current operational status (and is RO). So if ifAdminStatus is up(1) and ifOperStatus is down(2) then the interface has failed can be concluded. And so on.. Another book which i am planning to read after having completed this one, is, Network Management: Principals and Practices by N. Subramanian (a GaTech Prof.) which covers ADSL/HFC management in some detail and introduction to various tools (HP OV, MRTG) and alternative technologies (WBEM).

Saturday, September 30, 2006

Rocky wallpaper collection

boxing
Sep 29, 2006 - 7 Photos

Here are some of my favorite star (Sly Stallone's) pics from his movie Rocky (which i adore - as i adore boxing sport) and someday in this lifetime i will want to look like the above pic ;) ... and will update this blog post then with my pics by his side. Just kidding! Enjoy this small collection for now.

Monday, September 18, 2006

Preparing for SCBCD 1.3

Sun certified Business Component Developer exam (SCBCD 1.3)
is the exam i am going to take next on the coming monday (30 th Sept, 2006).
This exam covers EJB 2.0 spec (of J2EE 1.3). I am going to prepare for it inthe following way:
1. First refer to my notes from Mastering EJB 3rd Edn book by Ed Roman et al (covers EJB 2.1 and not 2.0 as required by exam).
2. Read Head first EJB book by Kathy Sierra and Bert Bates.
3. Mocks from Enthuware's EJBPlus.

Thats all of it i will do (or rather i can do) with 1 week of preparation.

Update 30th Sept, 2006: I passed this exam with 85% (85.7% in fact ;) ). Read my post on javarach of the customary how-i-prepared-for-it.

Saturday, September 09, 2006

H1B Visa Stamping Experience

I got my H1B visa stamped yesterday (8th Sept, 2006) at USA Consulate in Chennai, India. My appointment time was 8am in the morning but i was allowed in at 7am itself. Then i was asked to wait for my turn in a seated queue in the first building where the documents are verified before you are asked to proceed to the next building (where the actual visa interview happens). At about 7.30 i was asked to stand in the queue of the first building when all people who had their appointment at 8am where asked to stand in the queue. Here they verified the documents and matched the barcode on the visa fee receipt with the passport number as mentioned in their system and finally they took one barcode sticker from the yellow receipt and pasted it on the back of my passport. They also put one form which reflected at what stage i was in, in my visa stamping process (ie docs verified, finger printed, visa approved). Once the docs verification was done we were being asked to go to the next building. There again we had a queue outside the building. I waited in the queue for some 10mins and then a security personnel allowed us in based on our visa appointment time. Once in, two ladies were coordinating the seating of ppl asking them to keeping moving in a seated queue. First, one of them asked us to stand in the queue for being finger printed. This counter was in the center of the hall. First the left and then the right index fingers were scanned and this record was stored against our passport details (as the lady on the counter took first the passport and then asked to put the finger on the scanner). OK, hereafter, i was in another queue waiting for my turn for the final visa stamping interview. The guy just before me was from TCS and he got a 221(g). His was an L1 case. I saw a few oft repeated questions to L1/H1B:
1. What is the project on which you will be working in the USA?
2. Whether you will be working at the client site or in your company's USA office? If you said client site, then you may be asked to present the client invitation letter and probably if the client is lesser known name then some photographs of the client and probably its annual revenue etc.
3. Why have you been chosen to go to USA for this project (why not someone else from your company)? Basically i think they want to know how your skills map to the requirements of the project and how confidently can you state them.
4. Your academic qualifications? If you are not a comp. sci. graduate then probably you will be asked to tell where/how you learnt software development skills.

The communication skills matter alot. Some ppl i saw were asked something and they answered something else, and this irritated the VO. Note: The VO has a very short time span to gauge you and so you should give all positive signs about you (especially so by communicating well - ie speak good english). As they say, if you have the right skills then it shows by the way you talk.

My visa interview was brief (lasted 1min or so). The questions asked were the following:
1. Which project was i going to work on in USA?
2. What client?
3. What is my academic qualification?
4. Since i am a non comp. sci grad (a BE in electronics) she then asked me how i learnt software development skills. (any training etc). I said i am working for the past 7yrs in the industry (so most of the skills were acquired on the job plus i had a post graduate diploma from National center for software tech).

Thats all! I hope this post is useful to you. May you have a good experience in your visa interview as i had :).

Sunday, September 03, 2006

Book Review: JUnit in Action


Well i dont have anything to add as of now as i just bought this book but as i read some reviews (especially the one on eXtremeComponents site) i decided to benefit by learning how to unit test from this book. Yes the contents are very impressive as it covers mock objects, stubs and in-container testing strategies using JUnit and derivatives of it. The author is also a creator of Jakarta Cactus web-testing framework.

Preparing for SCWCD 1.4

I have decided to take the SCWCD 1.4 (CX-310-081) exam and have booked a slot for taking the exam at the local prometric test center on 18th Sept, 2006. I had already read the book Head First Servlets and JSP by Bryan Basham, Kathy Sierra and Bert Bates before but it was some 10 months back that it did so, and i needed some time to recap on the theory. I am using MZ's WCD Study guide to prepare and practice using the exercises from Head First book. I plan to use Enthuware JWebplus mock exam together with the mock exam with the Head first book and the mock exam at JavaRanch.com.

Update 18th Sept, 2006: I have passed the exam today morning and could complete it 45mins earlier (ie i took 1hr 30mins of time to complete the exam). Refer to my post on javaranch about how i prepared for it and where i went wrong to end up with the low score of 82%.

Thursday, August 31, 2006

Some good data grid JSP tag libraries

The best one (also best documented one) is http://extremecomponents.org/. I am yet to try it out though but it seems quite flexible and has recently integrated with DWR (http://getahead.ltd.uk/dwr) to provide AJAX support for the data grid. The data grid can include form components. Another good data grid enabling JSP tag library is the display tag library (http://displaytag.sourceforge.net/). I recently also experimented with the live grid example of openrico but due to its insufficient documentation i found it too time consuming to work with (http://openrico.org/rico/livegrid.page). For my project purposes, i settled with the extremecomponents data grid as it seemed atleast as flexible as others and was better documented.

Wednesday, August 23, 2006

Learning BPEL

After having passed the SCDJWS certification i was a bit confused as to what next to learn to gain more mileage with Webservices. For sometime i simply kept idlying my time at the javaranch.com webservices forum trying to answer some questions and keeping in touch and testing the depth of my knowledge on webservices. Well that process still continues but in the meanwhile i got to know about BPEL for WS orchestration and it got me interested. I found only one book which addressed only BPEL and not the whole paraphernalia of webservices which i had already learned/read in the course of getting certified. This was the book Business Process Execution Language for Webservices 2nd Edition by Matjaz Juric et al. Also i found this article from Sun quite informative.

I have today got the book and will update this post with a review of how i find it. Java ranch has a review on this book too and my first impression is - it covers exactly as much as i would want to read on BPEL to get my hands dirty. It covers both theory for BPEL 1.1 and practicals of how to develop using a BPEL engine - Oracle Business Process Manager 10.1.2. Though it also addresses the practical aspects of another BPEL engine from Microsoft - the BizTalk Server 2004 in the chapter 7 (the last chapter). Book starts with an overview of SOA and BPEL and an overview of competitors of BPEL. It also introduces the different WS-* standards which BPEL standard builds on. Then it delves into BPEL theory for the next 2 chapters. Then it covers the practicals of developing using Oracle BPM and JDeveloper 10g + Eclipse 3.1 for the next 2 chapters. Lastly it covers Microsoft BizTalk server 2004. There is an appendix of BPEL 1.1 syntax. Its not a big book (only 350 pages).

Tuesday, August 22, 2006

Editing blogs with Windows Live Writer

Microsoft just launched Windows Live Writer, a new publishing tool for WYSIWYG blog authoring on Windows Live Spaces, Wordpress, Typepad and other blogging services. Found this software via Digg and it looks pretty good so far. The Live Writer is pretty similar to the Word and so I’m not sure how this product will be positioned in the future. With all the blog editing tools in Office 2007, this is an interesting offering but I guess it could be the free tool that doesn’t have all the features of Word 2007.
My initial impressions of this tool are fairly positive. The WYSIWYG blog authoring is really good and allows you to edit in GUI mode or directly edit the HTML being generated. The image tool is pretty cool that will allow you to add images to your post that can uploaded to your blog directly.
Writer supports RSD (Really Simple Discoverability), the Metaweblog API, and theMovable Type API with more blog platforms and API coming in the near future.
Another feature that’s interesting is the ability to insert a Windows Live Local map directly into a post. For now, only Live.com maps is supported but the SDK that is also shipping should allow anyone to create interesting add-ons.

How i find it? Well i must confess that i was not able to figure out how to add a title to my post on the blogspot editors. Also editing in the context of the template in use is not possible when you use blogspot editor. This is one of the most attractive features of using a standalone application client to do the editing rather than editing your posts online in the less-than-mature rich text editors on blogspot and similar sites. In short, i would say, Windows Live Writer from microsoft is a useful contribution (currently being offered for free) and it simply makes the user experience of blogging easier.

Wednesday, August 16, 2006

Learning Design Patterns

I have recently started reading the Head first design patterns book. I read about 150pages of the book sometime back and now i have to resume my reading of the book from where i left. This time around, i am planning to put the design patterns i learn about from the book in my notes which will make it handy for revision and referring later. From what i recollect now about my experience reading those first few pages from the book, i want to say that i liked the easy presentation style and humor in the book which makes an otherwise dry subject a little more interesting. I will update this post after making some more progress on the book. In short, this book only covers 14 of the 23 design patterns covered by GoF's book.


Updated 25 Oct, 2006: I had missed to be able to complete this book earlier and recently i have experienced a deep sense of grief on being at loss for proper words or ideas when given a design problem. I think after revising SNMP as thoroughly as i possibly could, learning all basic design patterns is the last step i need to take to move on and shake hands with destiny :). Really, it came as surprise for me when i recently interviewed for a company for which i studied the whole day revising my C++ and by 8pm late evening i am only asked some desing problems which completely floor me. Apart from the human factors (that i was tired by the end of day having slept only 4hrs between 2 days and studying the whole day and i was skipping my lunch for those two days too), i realized that i MUST read this book before i set my foot in USA.

Thursday, July 27, 2006

Book Review : AJAX in Action

I have today completed the 1st of the 4 parts of this book and i must say that i loved reading it due to my growing interest in the AJAX methodology and the web application development, in general.

Part 1 of the book talks about what and why about AJAX, introduces the framework and toolset and the core technologies you need to know about when working on AJAX. This part is divided into 3 chapters (introducing AJAX, simple example with code and importance of refactoring the AJAX Javascript code).

Part 2 (this is where i am now in my reading) talks about the techniques to employ for coding the client and the server. Comprised of 2 chapters.

Part 3 (which i am yet to read) discusses about enhancing user experince (usability stuff that you should consider while developing AJAX application), security and performance of AJAX application. Comprised of 3 chapters.

Part 4 provides example applications using AJAX methodology like Dynamic double combo, type-ahead suggest, web portal with autosave functionality, live search using XSLT, and building a standalone RSS Feed Reader. Comprised of 5 chapters.

The reason i like this book alot is because i did not know much CSS, HTML DOM or Javascript before and there this book introduces those subject areas in a way that is relevant to the development of AJAX based application. And thats what a J2EE developer like me will require. We dont necessarily need to learn Javascript to develop libraries like Scriptaculous (i mean not like a web front end designer would want to know). All we need to know about CSS, Javascript and HTML DOM is to be able to work comfortably with those while making an AJAX application. The book has pretty good introduction to these topics and hence i have benefitted alot. The Appendix B named Javascript for object-oriented programmers is more than what i think i will need to know about the language. CSS and HTML DOM are introduced in chapter 2 and used throughout the book in the several examples thus giving one alot of room to practice. The coverage of examples using the most common scenarios where one would want to use AJAX methodology is also very nice. It also talks and demonstrates with examples, the use of different frameworks (like Rico, prototype, scriptaculous, etc) and also tell enough about the frameworks based on which you can decide which one will best suit your needs on a certain project. In short, you become educated enough to make a good decision on what framework to use for your project which can help you cut down the timeline for the project. If you are new to AJAX then do check out the book's website for a screencast by the authors on what is ajax. I just checked out on a few frameworks mentioned in the book and following are the ones which interested me most:

  • Rico: built over prototype library provides a AjaxEngine Javascript object which you can use to simplify the AJAX request/response and also provides some widgets like accordian for one.
  • DWR: Direct web remoting is an application framework which allows Java objects to expose their methods directly for AJAX requests to clients.
  • Echo2: is also an application framework which like DWR does not require you to know HTML, CSS and Javascript enabling the user interface to be created in pure Java. It provides a visual designer as an eclipse plugin using which you can layout your web forms easily and the corresponding code will be generated in Java. The SDK is open source but the eclipse plugin is not (a free trial for 30 days is available). Will write more as i read and learn more from this excellent book.

Sunday, July 16, 2006

My Studies so far...

I have read the following books in order so far since Nov 2005 when i made a move from embedded systems programming to the J2EE world:

  • Head first servlets and JSP by Kathy Sierra & Bert Bates
  • Mastering EJB 3rd Edn. by Ed Roman et al
  • SCJP 5.0 Study Guide by Kathy Sierra & Bert Bates
  • JBoss at Work: A Practical Guide by Tom Marrs & Scott Davis
  • Struts: The complete reference by James Holmes (only first 10 chapts).
  • Oracle University: Introduction to SQL
  • J2EE Webservices by Richard Monson-Haefel
  • Designing Webservices with J2EE 1.4 by Inderjeet Singh et al
  • Head First EJB by Kathy Sierra & Bert Bates
  • SNMP, SNMPv2, SNMPv3 and RMON 1 and 2, 3rd Edition, by William Stallings.

My plans are to complete the following books by November 2006:

  • Head first design patterns (for sure - started 25 Oct)
  • J2EE Design and Development by Rob Jhonson (May be)
  • Network Management: Principles and Practice by Subramanian (read 2 chapts.)
  • Oracle University: Program with PL/SQL (Oracle 9i)

Together with the above mentioned readings i have some certifications taken and planned for:

  • SCJP 5.0 CX-310-055 : Passed with 90% on May 15 2006
  • SCDJWS 1.4 CX-310-220 : Passed with 88% on Aug 10 2006
  • SCBCD 1.3 CX-310-090 : Passed with 85% on Sept 30 2006
  • SCWCD 1.4 CX-310-081 : Passed with 82% on Sept 18 2006

And some trainings:

  • Oracle Workforce development program:Introduction to SQL: Completed in May 2006
  • Oracle Workforce development program: Program with PL/SQL: Completed in Aug 2006.

Thats all about it till Nov 2006.

Tuesday, July 04, 2006

Preparing for SCDJWS

SCDJWS 1.4 is Sun Certified Developer for Java Web Services certification exam. I started preparing for this exam after taking the SCJP 5.0 exam earlier in May 2006. This exam covers alot of specifications (XML 1.0, XML Schema 1.0, WS-I BP 1.0a, J2EE 1.4 for WS 1.1, WSDL 1.1, SOAP 1.1, UDDI 2.0, JAX-RPC 1.1 to name a few). You can see the complete list at Valentin Crettaz's site. There isnt any certification guide available as of this writing for this exam so i followed the advices of people who have already taken this certification exam at JavaRanch SCDJWS Forum and following is my approach to prepare for the exam.

Again, as has become a standard practice for me, i started with a word document where i copy pasted the exam objectives and wrote down the reference material (name of the book and chapters) for each topic on the exam. In summary, following are the resources i am referring:
  • J2EE WebServices by Richard Monson-Haefel (RMH): all chapters + appendices E, F & G. I did not read the F and G from here but referred to MZ's notes for SwA with SAAJ.
  • Sun's Blueprint book - Designing Webservices using J2EE 1.4: whole book
  • Mikalai Zaikin's (MZ) WSD Notes and Quiz You will need to buy the quiz (~95+ questions) from Mikalai. I referred to the Security (chapter 8) and a section on SwA with SAAJ (a section in chapter 2) from MZ's notes. I went through all quiz questions once, a night before the exam.
  • XYZWS.COM - provides a free mock exam (in all 200 questions collection).
  • XSLT and TrAX from Elliot Rusty Harold's (ERH) excellent book Processing XML with Java.
  • Java Webservices Tutorial (WST) for tutorial on JAXB (chapters 1 & 2)

14th Jul 2006 - I am through with all chapters from the RMH book and am mid-way through the Blueprint book. I have to go back to RMH to cover appendices E, F & G which cover SwA, SAAJ with Attachments and JAX-RPC & SwA. I also have to cover the ERH book's XSLT/TrAX, MZ's notes + WS-Security and WST for JAXB/Security. This might take me another week. I plan to complete the syllabus by 21st Jul 2006. After this i will need another week's time to revise my notes and practice more on the code.

I have created some sample programs from RMH's book (on topics like XSD, XML namespaces, JAX-RPC JSE/EJB Endpoints and clients Generated stubs/Dynamic Proxies/DII, JAXR, JAXP DOM/SAX).

I practiced the JAXB samples (first 5 only) as discussed in the WST. The exam does not require one to know

customizing the JAXB bindings so i did not cover those topics. For security, i did not do any programming but just read the concepts from MZ's notes.

---
10th Aug, 2006 - I passed the exam (CX-310-220) with 88%. If you need my study notes (305 pages covering whole syllabus completely) the download it here. You can read my final tips to the ranchers on how to prepare at javaranch.com.

---
15th Mar, 2007 - I noticed that a few people (infact just 2, one wrote to me a thank you email and another mentioned of referring to my notes at Javaranch forum ) have used my SCDJWS 1.4 notes while preparing for the certification exam. If i could have posted my notes on a personal web site like MZ then probably more people will have been able to use it. Presently the single 305 pages pdf file might seem daunting to many. So setting up a web site is on my list of to-dos.

Tuesday, May 30, 2006

Learning Java Enterprise Edition (Java EE)

I started my learning of J2EE 1.4 late November 2005 with the book Head First Servlets and JSP by Kathy Sierra et al. It was a good book and i could understand what a MVC pattern means to the web application development. I took about 2 months to complete this book (in parallel i started developing a small application from my team in my place of work). I used the learnings from this book and by beginning April i could also read up Mastering EJB 3rd Edition by Ed Roman et al. It was excellent but a tome and i needed to revise the concepts from the beginning chapters by the time i could reach the end of the book. So i was not able to understand the sample application initially and did not give much effort to understanding in the first go as i thought i needed to make study notes to burn in the matter in the initial chapters. But reading the whole book in a go gave me some confidence in my approach to learning Java EE based development.

Then i thought of taking the Sun certifications and found that SCJP was a prerequisite so i bought the book SCJP 5.0 study guide by Kathy Sierra and Bert Bates and prepared for the exam. I scored 90% in the exam which i took mid of May. I then resumed with Mastering EJB book and started making my notes. By the end of this learning i strongly felt the need of some good book which explained how a real-world J2EE application is being developed. I had this notion after having read about Hibernate ORM being a preferred choice on the persistence tier and books like J2EE desing and development without EJB by Rod Jhonson which cautioned the developers against unwanted use of EJB in enterprise application development. Fortunately i found the mention of JBoss at work: A practical guide by Tom Marrs and Scott Davis book on jboss.org site. I could also get an Indian edition for that book which was released in October 2005 thus was reassuring enough that what it talked about must be latest practices in the developer community with regard to J2EE based enterprise development. I started reading the book and could cover most of it in 2 days. Yes it was easy cruise considering my sound foundations of Java SE edition and the knowledge i gained from Mastering EJB and HF Servlets & JSP books. Also this book gave me the knowledge of how the XDoclet and Hibernate can be used. This is where i am now in my learning cycle as of this writing.

As for my plans for the coming months, i want to complete my notes from HF Servlets & JSP book (for the sake of completeness and also to accumulate APIs i did not use in my small project work before i move on), then i want to start with the Struts: The complete reference book and finish that in 8 days gathering as much as possible in that time. Then the plan is to read J2EE Webservice book by Richard Monson Haefel. This is all for the month of June. After that in July i plan to read 3 books in order - Head First Design pattern (8 days), Core J2EE Patterns(10 days) and Mastering BEA Weblogic Server 8.1 (12 days). In the following month of August, i want to take SCDJWS certification exam and cover a book - Ajax in action which i bought long back but have not had the time to cover so far. The idea is to understand J2EE development on all tiers (web/presentation, business, persistence). In the month of september, i have not planned for yet, but what seems most logical to me now is that i will want to cover Mastering JSF and Hibernate in Action.

In october this year, i plan to start some open source project work, probably related to my field of expertise (network management systems and SNMP). I have contributed in the past on one open source project http://www.mibble.org in the UI development for SNMP MIB Browser using the mibble parser and westhawk snmp library in Java. I am still not sure what work i will be doing in october but it has to use my learnings on J2EE in some way. The idea is to gain enough expertise on the J2EE development and also to be in touch with the SNMP/NMS domain before i start my job search again.

Tuesday, May 02, 2006

Preparing for SCJP 5.0 Exam

While preparing for SCJP 5.0 exam, i did the following:

  1. Bought a certification guide (SCJP 5.0 Study Guide by Kathy Sierra & Bert Bates)
  2. Read the book from cover to cover
  3. The guide came with a ebook in pdf format on a CD with the book. I used the pdf document for copy pasting the contents i wanted to revise later into a word document notes i prepared.
  4. I first copied the 2 minute drills part (which was like a quick summary of essential parts of the chapter). Then i went to the relevant parts where i needed some examples copied from into my notes.
  5. I also copied the exercise examples to the respective sections of my notes. This really helps to see the kind of question on a topic you can get near to the notes on that topic.

I did the above for all chapters and captured my notes in one word document which i took a print out of and then revised and kept adding any special question which i could not answer from one of the several mock exams found on the internet.

As an end result, following the above process for any certification exam, will help one prepare not only a exam cram but a worthy quick reference for work and refreshing your knowledge on the subject for a job interview.

-------------

Well i passed the exam on 15th May, 06 with 90% score (65/72 questions answered correctly). And here's my final words on how i prepared for this exam: Thread on JavaRanch Discussion Form where i declared my pass result

Tuesday, April 25, 2006

My tryst with AJAX

It all started with a question bank application that i was asked to build for our staffing team's use. Once an interface to add/remove/update questions to a database was created i was asked to build a web form to allow the interviewers to manage the questions they asked in an interview session together with the ratings assigned per question per candidate. Also the interface to be quick enough for the interviewer to find the right question to ask and update on the web form while conducting the telephonic interviews. AJAX seemed to answer some of the questions like not having to reload the pages thus giving a desktop application like usability to the interviewers. And i gathered that it also a hot term in the industry today. So i thought i will make use of the simple web form work as my learning platform for AJAX. I had bought the book AJAX in action sometime back but never got time enough to start reading it. About 600 pages of it can be completed in no less that 10 days. I thought its worth to invest those 10 precisious days into the learning of this interesting concept. Will post back once i have made some head way into the book.

Book notes: Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems, by Martin Kleppmann

My notes from the excellent book on how software has evolved to handle data from hierarchical databases to the NoSQL -  https://www.goodrea...