Archive for May, 2007

JAX India 2007: Day 2: JSF, Java Architecture Management, Best Practices WS, Java IDEs

Wednesday, May 30th, 2007

The Day 2 of JAX India saw the start of 40 conference sessions spread over 3 days. Here is extract of the sessions that I attended.

Introduction to JSF for Struts Developers – Craig McClanahan

The session was targeted to cover an overview about Java Server Faces. The agenda includes:

Origin of Struts

Craig started with giving an overview of how Struts came into existence.
The main reasons was

  • Multiple language support

  • Available on the web

  • Separate responsibilities into layers etc.

In the Mean Time…

As the time went on, Standardization started taking up the market with lots of new Standards, like componenting for interoperatability, target for drag and drop etc.

JSF Key Concepts

Craig stretched on the key concept of Components which brought JSF in existence.

In all the session did touch upon the high level fundamentals of JSF but my expectations were different. I would have preferred a sandpit project like Hello World demo which would have given a better understanding. Anyways this is my thought.

The second session was an interesting presentation on IDEs future.
Java IDE(s) – Then, Now and Eventually – David Intersimone

The session was around 20 minutes but the content of the presentation was really good. Few key things from the presentation:

Future of IDEs

  • Support for Rich Internet Applications

  • Support for Ajax

  • Collaborative features within IDE

The next session that I attended was Increase Project Success with Java Architecture Management – Alexander Von Zizewitz.  The presentation was really cool !!! He depicted dragon as the Complex Java Project with a small man with sword and shield in his hand as us trying to overcome the dragon :) Here are few interesting points from his presentation:

Known project problems

  • Time Pressure

  • Skills not meeting system requirements

  • Unwanted dependencies

  • Complexity growing

And if we fall in the pitfall of the above problems, we start just making it work and then start the real problem like:

  • Increase in testing time

  • Problems with deployment

  • Making changes become increasingly difficult

So what are the ways to control Java Projects that Dragon doesn’t rule the world:

  • Avoid Package cycles by using jdepend

  • Code Reviews specially peer-to- peer

  • Check Style and FindBugs Tools usage

  • Checking key metrics on regular basis

  • Define architecture of the system at high level of abstraction

    • Cut horizontal into layers to represent different layers like
      User Interface, Business Layer, Data layer

    • Cut vertically into slices to represent actors

    • Define allowed usage for each actor
  • Define useful matrix threshhold

So once your system is divided into horizontal layers and vertical slices, start mapping code to logical diagram on the following lines:

  • Each package mapped to exactly one sub system

  • Good naming convention

  • Subsystem should have well defined interfaces

  • Work independently

    • Start with layering

    • Add vertical slices

    • Define subsystem interface

    • Fine tune rules of engagement on subsystem level

Once you are done with this, measure the overall coupling at system level, sub system level, package level etc. using Component Dependency technique.

5 Golden Rules to ensure technical Quality

  • Create cycle free logical architecture
  • Avoid package cycle
  • Keep Average Component Dependency low
  • Keep size of Java files ( < 700 LoC)
  • Define threshhold for complexity

 In all the presentation was interesting and provoke at looking more into SonarJ tool which Hello2omorrow has come up with to solve such issues.

Apart from these I attended Best practices for inter-operable Web Services – Thilo Frotscher, the details of the session are already covered by Amit in this blog.

In all the sessions are not too much impressive may be due to limited time allotted for each session. Looking forward to Day 3 at Jax India 2007.

JAX India 2007: Day 1: Web2.0? But I am Barely keeping up with Web 1.0 Right Now !

Monday, May 28th, 2007

Its been an exciting day on the inaugural day of JAX India 2007. The day was
meant for workshops and I attended half a day workshop on
“Web 2.0? But I am Barely keeping up with Web 1.0 Right Now !”
by Craig R McClanahan. Here is extract from the session:

The session covered from history of web to what is Next Generation web (Web 2.0) and what we should do towards it. Here is extract from his presentation:

HISTORY OF WEB

He started with his experience of Web way back when he started in 1975. From Lonely computers, which were self-absorbed applications to telephone lines (part lines to kids line) which lead to evolution of Internet and standards like HTTP and HTML.

MAINSTREAM WEB APPLICATIONS TODAY

This section of the presentation covered about how the current web applications are. Few main highlighting points are:

  • Increasing support for cross browsers
  • Key area of development happening around Mobile space
  • Server side capabilities are growing
  • Programming understanding in multi-threaded environment
  • Storage capacity is effectively free, CPU nearly so
  • Network infrastructure improving
  • Development technologies maturity at a much slower pace and challenges are in coming up with a framework like Struts and IDEs for JS-DHTML developments
  • More and more user personalization
  • Standardization at different scales and complexities

NEXT GENERATION WEB DRIVERS

Craig stressed on using next generation web rather than Web 2.0 with emphasis on 4 key drivers:

Enhanced User Interfaces

The driving force is the limited usability of web applications compared to applications installed locally. Ajax and DHTML are the immediate solutions.

Lightweight Programming Models

  • Strong preference towards simplicity; less code = less initial work, less update work
  • Scripting languages again gaining popularity with many large application built with php, perl etc.
  • Loose coupling and layer based design
  • Increasing preference for quick, iterative approach (Agile model)
  • Programming models  
    • Ajax and DHTML (server side business logic)
    • Ajax and DHTML (client side business logic ) i.e. making web applications
      available offline 
    • Browser plugins (Flash/ Flex/ Java FX etc)

Web as a Platform

  • Web applications to become more of a service
  • Web platform providing Social network effect
  • Reducing “local islands” of important data
  • Users looking something bigger
    • Identity
    • Flexibility
    • Ubiquity 

The read/write web 

  • Web as a Bulletin Board

WHAT SHOULD WE DO

Craigs Top Ten Suggestion List

10 – Expose Data/Logic as services

9 – Incorporate External Content

8 – Seek QOS (Quality of Service) deals from Sources

7 – Give QOS Deals to users

6 – Adopt Agile Processes

5 – Test Driven Development

4 – Architect for Scalability

3 – Embrace Heterogeneity

2 – Reach out to Mobile Clients

1 – Enable User Provided Content

The session turned out to be good for users who do not have exposure to Web 2.0. The first 45 minutes where Craig covered History of web and existing applications was bit too extended and I was looking for more on Web 2.0. Let’s hope the other sessions lined up around Web 2.0 will be able to provide more insight.

Internationalization in a different way

Monday, May 28th, 2007

Some days back Google launched a new feature on Google Translate, where search query is in one language and the results can be a from the web pages in other language.

From Google: How does this work?
1. Search for Dubai tours from English to Arabic.
2. We translate your query into “جولات دبي” and find Arabic web page results.
3. Finally, we translate the Arabic web page results back into English for you.

This will bring in a whole new experience in the Internet world. It gives an opportunity to explore all the hidden information which was impossible before due to language barriers. I will expand this article to how it will change in the CMS world.

Is Ajax making sites less reachable?

Thursday, May 17th, 2007

We have been talking about Ajax and Web 2.0 technologies for sometime now. At one end Ajax becoming an asset from usability point of view but on the other hand it is making sites less search engine friendly. Search engines for now are not intelligent enough to make a server side request and retrieve the information to index. So it boils down to Usability Vs Search-ability? Which one to achieve?

What is the best way to achieve a balance between the two – making my site usable as well as search-able.

Here is one of the possible approach:

Step 1: To design your site without any Ajax. Javascript
Step 2: Then modify your website to include small Ajax, Java scripts components making sure that the content that gets hidden is available else where in the site which does not deploy Ajax

Search Engine: Is Content Separation a new SEO?

Thursday, May 3rd, 2007

We are very familiar with the concept of separation of code from content. Yahoo recently tried to separate content itself into actual content and common content. What I mean is separating parts of a page that do not relate to the main content, such as navigation, menus repeated across the entire site, boilerplate text, or even advertising. Interesting!!!

Yahoo introduces a ‘robots-nocontent’ class which can be included with any HTML tag. By introducing this class within tag, the idea is to

• Focus on the main content
• Not to use those sections of the page marked for finding the page
• Improving abstract for the searched page by omitting unrelated info

How to use it?
<div class=”robots-nocontent”>Header of the site</div>
<span class=”robots-nocontent”>Navigation of the site</span>
<p class=”robots-nocontent”>Footer of the site </p>

My thoughts:
+ve
• Good way to segregate main/relevant content from general content
• More focus content

-ve
• Why “robots-nocontent”, why not “robot-content”?
• Is defining class a right approach? Most of the sites does not have well formed HTML, so think of a situation where you applied this class which covers the whole page content :)
• Currently keyword density as well as its location is one of the prime SEO techniques. What will happen if websites start using this tagging?
• Is it not raising concerns with content security? Someone can define not viewable content within these tags and search engine will happily ignore this and show your site even in top sites :)
• Need to be standardized before people start working towards it

What are your thoughts?

Another Collaboration Feature: Google’s Gadget

Wednesday, May 2nd, 2007

Here is another Collaboration Feature from Google. Google has introduced a new Gadget maker product for iGoogle (new name for Google Personalized Homepage). The users without having any programming or web design experience can create Gadgets and share with community or other iGoogle user. The Gadgets are as simple as filling out the form in the predefined 7 templates:

• A Photo gadget which is designed to share a series of photos
GoogleGram gadget that display a new greeting message for every day of the week
Daily Me gadget which will show what you’re currently doing, as well as quotes, what’s on your mind etc.
Free Form gadget that as the name suggest will allow free flow of information, image text layout background colour
YouTube Channel gadget to share good videos on YouTube
• Personalized List Gadget to basically present your list of items. It could be list of your favorite songs, a list of items to buy today etc.
Personalized Countdown gadget is more like a reminder to any event, happening with a countdown

Apart from this, it provides option to update the Gadget and re-publish so that it gets updated at the other end.

Pretty neat way to bring people togather !!!! :)

But few things to watch out for:

• Updation at receiving end took a pretty long time to get refreshed with updated information
• No intimation whether the iGoogle user has added your Gadget or not
• If the Gadget creator deletes the Gadget, will it get deleted at the other end?
• A way to establish two way communication rather then just one way for now