Wednesday, December 31, 2008

History repeat itself – Cloud computing

When we look at the history of computers in early days having a computer is not a common thing, only the people and companies who had millions of dollars were able to own a computer. And it is true that, it started as a central based computing with time sharing. So if we want to get a computer job done then we had to go to the operator and submit our job and pay the cost. Gradually technology evolved and owning a personal computer became a common thing. Almost everyone has access to a personal computer now.

So Mainframe based computing had evolved to distributed computing, simply we can do almost anything with our personal computers, and they are more than 1000 times better than early days computers. But I think we are going back to the central based model of computing again, the reason behind my argument is cloud computing.

With cloud computing all the resources in a central place (there will be number of centers), and someone will be responsible for managing all the hardware and provide that as a service HaaS. And will manage software for us and provide Software as a service SaaS. So what we do is use those services and pay the cost based on the time we used. It is like taking a taxi, we do not need to worry about anything like, maintains, parking etc.. . So I consider cloud computing as something almost similar to those old days central based computing, in fact in large scale.

Happy new year 2009

Another year, another chance
To start our lives anew;
This time we’ll leap old barriers
To have a real breakthrough.

We’ll take one little step
And then we’ll take one more,
Our unlimited potential
We’ll totally explore.

We’ll show off all our talents
Everyone will be inspired;

We’ll give up all bad habits;
We’ll read and learn a lot,
All our goals will be accomplished,
Sigh...or maybe not.

Wish You A Happy New Year !!



Curtsy : Joanna Fuchs

Monday, December 29, 2008

Prison Break and our life

I do not watch that much of TV series, but due to some reason I stated to watch prison break. It was one of a kind. The main reason I like it is, specially in season1 and season2 it was all about master planing. There they have looked into every possible outcome and planed according to that. I think that is something very useful in day to day life. And I strongly believe we can not succeed without having a long term goal. If we have a goal then we can and we will find a way to accomplish that. So we need to think what we need to do after 5 years, after 10 years and etc.. , and then we should plan accordingly. That is exactly what happed in PB season1 and 2, however in season3 and 4 they have forgotten that, there it is just day to day goal and the story moving here and there. However it is still interesting to watch.

Thursday, December 25, 2008

The transformation of Animal into Food

Most of us eat and enjoy animal meat, but did you ever think how do they make or transform animal into food. Killing any kind of animal is not a good thing and we all know that. But killing animal like that(as shown in the video) is not acceptable any means.

“Life on the farm isn't what it used to be. The green pastures and idyllic barnyard scenes portrayed in children's books have been replaced by windowless sheds, tiny crates, wire cages, and other confinement systems integral to what is now known as "factory farming." “

Watch the following video if and only if you are serious about that you are going to stop eating meats. Think twice before watching the video.




Source

Friday, December 19, 2008

Axis2 Information Model

In Axis2 there are two main types of data, which static data and dynamic data. Static data coming from the various description file, whereas dynamic data is created at the runtime. I recently wrote an article explaining the available types of static data, that will help you to get some understanding about various static data types, as well as when and how they are going to be created.

Read the full article.

Thursday, December 18, 2008

Servlet API and available ports of the application server

Servlets are something we heavily used in Application server environment. And it provide accessing most of the information we need about the application sever and the context. However it does not provide a way to get the type of ports that is being exposed. For example a servlet may be exposed in HTTP (8080) and HTTPS (8443), then it would be able to get those port information from the servlet API. All those informations are available at the application server, so why not servlet API expose those information.

Wednesday, December 10, 2008

Improvement to Google Maps

Google Maps is very cool and very useful, sometime it is very difficult to go one location to another without having support for Maps like Google. But I think Google need to add one improvements to the Map. That is it should be able to track the current location from the IP and then open the Map. Other wise whenever we go to somewhere we need to find the address and search that in Google.

This can be easily done in all the cases, for example if I search maps using my computer then it can get the IP and from the IP it can probably get the location. So it should be able to find at least very close estimate. Second if we browse from a mobile then it should be able to track the location using the GPS coordinates. So any case it should be able to track my current location.

Thursday, November 20, 2008

Getting SPEC Benchmark working on WebSphere

Currently I am in the process of getting SPEC benchmark working on few application servers , first got that working in Jboss , and the documentation they have provided is very useful. Then I started to work on WebSphere (with MySQL) but I still could not able to get that working. So if anyone has got the specjAppServer2004 working on WebSphere , please share those configurations with me.

Wednesday, November 19, 2008

Singularity: Microsoft's Open Source Operating System

I did not know something like this before though the OS is around since 2003.

http://www.infoq.com/news/2008/11/Singularity-Open

Sunday, November 16, 2008

Microsoft’s new "M" programming language

Microsoft has recently introduce a new language called "M" , at the last ApacheCon bar camp Paul did a talk on that and I found very interesting. As I learn from Paul , it help you to build new language very easily and you can see the syntax tree while you building the language. I still did not get time to have a look at that , but I am planing to do that soon.

Monday, November 10, 2008

A Petri Net Approach to Analysis and Composition of Web Services

My friend Xiong Pengcheng recently publish his research work on Web service transactional journal , the paper is more about Web service composition and BPEL . Abstract of the paper as

Business Process Execution Language for Web Services (BPEL) is becoming the industrial standard for modeling web service based business processes. The check of behavioral compatibility for web service composition is one of the most important topics. The commonly used reachability exploration method focuses on verifying deadlock-freeness. When this property is violated, the states and traces in the reachability graph only give clues to re-design the composition. The process must then repeat itself until no deadlock is found. In this paper, multiple web services interaction is modeled with a Petri net called Composition net (C-net for short). The problem of behavioral compatibility among web services is hence transformed into the deadlock structure problem of a C-net. If there exist incompatibility cases, a policy based on appending additional information channels is proposed. It is proved that the policy can offer a good solution as well as be mapped back into the original BPEL models automatically.

Sunday, November 09, 2008

Microsoft movement to Apache with Axis2

One of the main enemy for most of the open source companies is nothing but Microsoft , so being an open source foundation Apache has the same thing. I know Apache does not compete with someone , but developers had that thing in their mind.

ApacheCon US 2008 was one of the history making event in software field , thats is due to two reason. First Microsoft sponsored first ever ApacheCon , second they publicly announce their movement to Apache. I was listening to key note speak done by Sam Ramji (from Microsoft) , it was one of the best keynote I have ever attend. He openly mentioned some of the wrong impressions that MS people have about Apache , one classic example is when he decided to sponsor ApacheCon he has received a number of emails saying “Why do you sponsor for IIS competitor” , that is mainly because people think Apache as Apache Web server. They do not know Apache consists of a number of other projects , in fact 62 top level projects.

It is interesting to see that Microsoft some to Apache specially with a project that I have contributed a lot , which is Axis2. Microsoft and WSO2 were doing a number of interop over the last few months , and even there was a live interop at the last .Net camp. Which was an interop solution for stock trader application which communicate with Java , .Net and PHP. That particular application is now going to start as a incubator project in Apache called “Stonehenge”. That is the start of Microsoft contribution to open source via Apache.

Sunday, November 02, 2008

How does it works ? Car system Explained

If you have a car and if you want to learn how things are working then following link would be helpful , it explains some of the stuff in very simple manner.

http://www.2carpros.com/how_does_it_work.htm

Wednesday, October 29, 2008

VMWare Recording and Replay

Simply, it allows for making a recording of (almost) everything that happens to a VM between the time you hit Record and the time you hit Stop. This is not a movie recording, but more of an execution recording. You can play it back however many times you like. Most important thing is it records at the instruction level , so it keeping the complete memory and system state.
The process is said to be deterministic , because it keeps all the instruction that send from the guest operating system. Which include all the IO instructions (Network , CD and all kind of IO) , user clicks and any other type of asynchronous call as well.

What is this good for? Well, have you ever tried testing a program only to encounter a bug that you just can’t reproduce? Maybe there was some memory corruption that happened under some specific case that you just can’t seem to diagnose. Or maybe it’s a network packet that came in in some form that your application didn’t expect. Under normal circumstances, you’d have to do a lot of guesswork in order to find out what exactly happened. Far too often, it’s just too hard to reproduce the bug and it goes unfixed for some time.

Now imagine instead that you’re testing the program in Workstation and, before your testing, you hit Record. You attempt the test and the program crashes in some weird manner. No problem. Hit Stop and replay the recording. Just before the crash occurs, stop the playback and attach a debugger. Messed up? Didn’t find the cause? Replay that recording again.

In addition to the programming debugging this can be used as a fault tolerance and clustering technique. Where you can create an environment with same VM image and then you can pick one of them as the primary and other one as the backup . When the actual invocation happen rather then recording the events in the primary image , you can send them to the backup image. So if the primary fails , backup can easily take over. Because it is not just a replicate , it is an identical to the primary at anytime.

Finally I consider this as a very handy tool as well as can be used to many application to save the time. May be in the future when you report a bug you can attach the VM record log so that other people can easily reproduce the error.

Thursday, October 16, 2008

Yahoo is going open ?

Today I got a chance to listen to a very interesting talk from Dr. Larry Heck , he is the Vice President, Search & Advertising Sciences, Yahoo. The title of the talk was Large Scale Data Analysis for Web Search & Online Advertising R&D Using Pig™ and Hadoop™ . The talk is interesting due to few reasons , first he did a great job explaining how yahoo search and yahoo advertisement works. And he explained some of the algorithm behind the secret of yahoo search and advertisement. One thing I heard most useful is that seems like Yahoo is moving towards open source ,and they are try to open all of there search API open so that would be a very good news. Actuallty as the frist setp that they have open sourced and controbuting to Apache Hadoop and Apache Pig. It is amaze to see the perfromance improvements they have gained after they have moved to above metiuoned apache tool. They have able to reduce some of the taksed which took more than few days to less than hour.

Part of the abstarct from his talk

Pig is an open-source platform for analyzing large data sets that consists of a high-level language for expressing data analysis programs, coupled with infrastructure for evaluating these programs. The salient property of Pig™ programs is that their structure is amenable to substantial parallelization, which in turns enables them to handle very large data sets. Its infrastructure layer consists of a compiler that produces sequences of Map-Reduce programs, for which large-scale parallel implementations already exist (e.g., Hadoop).

Tuesday, October 14, 2008

Axis2 tutorial at Apachecon US 2008

I am planing to do an Axis2 tutorial in ApacheCon US 2008 , so if you are interested in attending that tutorial I think its time for registration. The tutorial will cover , introduction to Axis2 , Deploying Axis2 , Writing services , invoking services , session management and etc..

Monday, October 13, 2008

How to Control Binding Generation in Axis2 ?

Whenever you deploy a service in Axis2 , it generates a WSDL for you. You are able to see the WSDL generated when by executing a “?wsdl” for your service. If you look closer you will see that the WSDL generated has three bindings.

* SOAP11 binding
* SOAP12binding
* HTTPbinding

So next question is how to control the binding generation behavior. To address that I wrote a knowledge base in OT. Read full KB

Sunday, October 12, 2008

Good lesson not to trust electronic equipment

Today something interesting thing happened to me. I had to drop one of my friend into his place. Actually he bought a new car recently and I had to help him to learn how to drive and then drop him to where he live. So we got the printout of the direction, however some other friend of mine gave me a GPS navigator. So I thought that is easier than reading printout and go.

So I put the destination on the GPS navigator and asked to select the root skipping highways. So it did a good job and directed me how to go. So I was driving for a while , may be about 15-18 miles, I took few left and right turn. So now I have no idea where am I , and actually I do not need to know. Because GPS can help me to go there. Unfortunately when I was driving I suddenly realized that the GPS does not work !!!! , I got STUCK

So now I am in a big trouble I have no idea where I am , and I do not have a city map as well. So I took few roots to see whether I find any of the familiar road, unfortunately I did not find any. So I decided to go to a gas station and ask about that. So I went there and ask the person about the location I need to go , he said no he do not know. Then I asked him whether he knows how to get in to Georgia Tech , then he said yes. So luckily he told me the to take the high way , but he said that he is not sure about the exist. So I took the highway and went about few miles, oh I found an exist which I know !!!

So it was a good lesson for me ,I should not always trust the electronic items , we need to have something ready when we faces some unexpected situation like this.

Friday, October 10, 2008

Embedding Apache Axis2 into Existing Applications

Axis2 can be deployed and used in various manner , we can use Axis2 as a client to invoke a remote service , we can use Axis2 as a Web services server to deploy Web services. And we can deploy Axis2 inside an application server and deploy Web services. In addition that we can embed Axis2 into existing application , so I wrote an article to discuss the procedure of embedding Axis2 into an existing application.

Read the full story

Saturday, October 04, 2008

Request Arrival time tracking with Tomcat

This is something I really wanted but I did not find that so after doing some amount of work I found a way to track the request arrival time of Tomcat. By default it records request depart time and service time. There are some instances having that is not enough , so I did the following and get the job done.

- Implement the lifecycle interface that Tomcat has
- Then add a Value component in Tomcat (server.xml)

So class would be something like below , of course it is very simple one , need to modified but it just does the job.

public class TimeTracker
extends ValveBase
implements Lifecycle {

protected LifecycleSupport lifecycle = new LifecycleSupport(this);
private boolean started = false;

public ResourceTrackingAccessLogValve() {
super();
}


public void invoke(Request request, Response response)
throws IOException, ServletException {

// Pass this request on to the next valve in our pipeline
long t1 = System.nanoTime();
getNext().invoke(request, response);
long t2 = System.nanoTime();
long time = t2 - t1;
System.out.println("ArriveTime ns " + t1 + " Departtime ns " + t2 + " ServiceTime : " + time);

}

public void addLifecycleListener(LifecycleListener listener) {

lifecycle.addLifecycleListener(listener);

}


public LifecycleListener[] findLifecycleListeners() {

return lifecycle.findLifecycleListeners();

}


public void removeLifecycleListener(LifecycleListener listener) {

lifecycle.removeLifecycleListener(listener);

}


public void start() throws LifecycleException {
// Validate and update our current component state
if (started)
throw new LifecycleException
(sm.getString("accessLogValve.alreadyStarted"));
lifecycle.fireLifecycleEvent(START_EVENT, null);
started = true;
}


public void stop() throws LifecycleException {

// Validate and update our current component state
if (!started)
throw new LifecycleException
(sm.getString("accessLogValve.notStarted"));
lifecycle.fireLifecycleEvent(STOP_EVENT, null);
started = false;

}


}


And then need to add the following Value tag in server.xml

<Valve className="org.log.ResourceTrackingAccessLogValve"
directory="logs" prefix="localhost_resource_log."
suffix=".txt"
domain="Catalina"
pattern="%a %t %D %s %b %U %q %m" resolveHosts="false"/>

Monday, September 29, 2008

The crowd within

A battle of ideas is going on inside your mind

THAT problem solving becomes easier when more minds are put to the task is no more than common sense. But the phenomenon goes further than that. Ask two people to answer a question like “how many windows are there on a London double-decker bus” and average their answers. Their combined guesses will usually be more accurate than if just one person had been asked. Ask a crowd, rather than a pair, and the average is often very close to the truth. The phenomenon was called “the wisdom of crowds” by James Surowiecki, a columnist for the New Yorker who wrote a book about it. Now a pair of psychologists have found an intriguing corollary. They have discovered that two guesses made by the same person at different times are also better than one.

Do you want to read the full story ?

I hope you may start to read the book as well.

Wednesday, September 24, 2008

Configuring Axis2 via axis2.xml

As you have already realized there are a number of parameters in Axis2. You can easily change them as you wish, but the problem you might have is the meaning of those parameters. So I recently wrote an article explaining most commonly used parameters in Axis2.

Read it
and tell me , if I have missed any of the parameters.

http://wso2.org/library/tutorials/learning-axis2-xml-part1

Monday, September 22, 2008

Bad side of social networks

I do not think any one of us new to the term social networks , how many social networks out there ? . And I am sure you belong to at least one of them. When I say social networks there are different kind of networks. Some of them are profession networks such as LinkedIn , and some of them are network for fun (facebook) , some of them to share images (flicker). Not only that number of social networks are going up very rapidly.

If we look at those social networks , different network gather different data from us. If we look at the professional networks they will collect data like places where you have worked , type of the work you have done. On the other hand if you look at fun type of networks , it collects data like what do you like to do at the leisure time , what places you would like to visit and etc... , at the end of the day all those networks collect so much of personal data from you. With knowing or not knowing , we let those applications to collect and share our data. I agree that I am also a member of a number of networks.

Now let's see what are the problem associate with having those personal data for public usage.

First thing is you start to receive a number of unwanted or what we call as junk mail , because someone can find your name and email from those networks and then find the areas your are interested in and then send emails. And we all know what happen when your email address goes public.

Second , from those social networks one can find your friends. And then someone can send emails or photo links as your friends sending to you [A good example is tagging and commenting in facebook]. When you see a mail from your friend saying look at this nice picture , you are most likely to click that link. Then it might take you to bad site and ask your to login to the applications which is similar to the that of your social network home page. Then they can collect your user name and password. This is very risky because most of the people use same user name and password for various places.

Third , say you have a friend call “Foo” in facebook , then that person is not there in your professional network. Now what happen is someone (not Foo) can send an invitation asking adding you as a friend in your professional networks. Since the name is familiar to you , without checking too much you will allow to add that person to your network. Once you allow , he can send request to some other friend of you , then that person will also allow , because he is already a friend of yours. This is often happen in entertaining network like facebook.

I am sure there are enough information out there in various social networks , where someone can collect those information and do online transactions or login into your bank accounts. In my view I think social network help a lot for phishing attacks as well.

One thing to remember is yes , social networks are good and fun as well as help a lot. But there is bad site of that, we need to know what kind of data we allow to share. Specially , when you provide your personal information like birthday , address , phone numbers think twice and provide.

Thursday, September 18, 2008

Exposing data bases as a Web service

I know Data service is one of the hot area in the Web services world, data service is nothing but enabling Web services support for the relational data bases. There are a number of ways of doing that. However Axis2 and WSO2 has a built a very cool and easy way of doing that. Which is called WSO2 Data services. I think I have mentioned the architecture of Data services in few months back. Today I am not going to talk about that , rather I am going to lists some of the very cool feature in WSO2 data services 1.0 release.

You can download that , which is free and release under Apache 2.0 license. So if you do not like how that work you can change that , I am sure you do not want to do that. Because you will be more than happy with the set of features that has :)

* Service enable data locked in relational databases, CSV and
Microsoft Excel files
* Zero code approach - simple XML descriptor file is all you need
* Easy configuration via web based graphical console / Eclipse
plugin wizard
* Customizable XML output
* Both REST & WS-* support
* Built-in Connection pooling support
* Aggregate data from multiple data sources
* Support for exposing Stored procedures & functions
* Built-in caching to enhace performance
* Throttling to ensure that your database is never overloaded
* Try-it tool to test the services on the fly
* Secured access to data
* Reliable delivery of messages

WSO2 Web Services Framework for Jython using Axis2

Adding one more scripting support to Axis2 WSO2 has announced Jython support to Axis2. So now you can deploy and access Web services using Jython. It is very cool idea. Luckily I got a chance to involve this a lot with Heshan (a student from , University of Colombo) , who did the implementation work. Actually this is my second chance to get involve with scripting support for Axis2 , first one was JRuby support which was done by Thilina (Student from University of Moratuwa.)

WSO2 WSF/Jython provides an amazingly simple approach to create (Code First) and consume Web Services in Jython. This framework integrates the Apache Axis2 web services engine into Jython. Thus, providing all the power and versatility of the
Axis2 engine to the Jython user. Now, with just a few lines of code, Jython users can enjoy the benefits of Service Oriented Architecture using Web Services in their applications.

Web Service clients written using WSF/Jython framework could invoke enterprise web services which require WS-Security. Sending binary attachments as MTOM is also supported.

WSO2 WSF/Jython is released under the Apache License v2.0.

There are two packages that comes with this release, the server side and the client side.

For more information, please visit our project home page,
http://wso2.org/projects/wsf/jython

You can download this release from:
http://wso2.org/downloads/wsf/jython


Client Side Features (Explained in detail here)
-----------------------------------------------

* Support for invoking Web Services in a simple clean manner

* Ability to use WS-Addressing when invoking services

* Ability to invoke services which require WS-Security

* Ability to send binary attachments using MTOM


Server side Features (Explained in detail here)
--------------------

* Support for exposing services written in Jython

* DataBinding support using a simple annotation mechanism

* Automated WSDL generation

* Ability to expose all enterprise features of Axis2 to services written in Jython

Wednesday, September 17, 2008

Axis2 transports as a new project

When we start Axis2 , Axiom was part of Axis2. And then we realized that the advantage of moving Axiom into a separate project , so we moved Axiom into Ws-Common. After that a number of project started to use that. As you know Axis2 core is transport independent as well as Axis2 has number of transports support. At the moment projects like Apache Synapse are using Axis2 transport. And they do not need full Axis2 to have Axis2 transport support. So moving transport into a separate project will be benefited for many people. So last week I was able to move all the transports from Axis2 to new module in WS-Commons. And Dims helped me to setup nightly builds for the transport module.

So now if anyone interested in writing transports for Axis2 , or if you have already written any transport its time to add them to transport project.

Monday, September 15, 2008

XML tool to manage XML documents through a Fluent Interface

"XMLTool is a very simple Java library to be able to do all sorts of common operations with an XML document. As a Java developer, I often end up writing the always the same code for processing XML, transforming, ... So i decided to put all in a very easy to use class using the Fluent Interface pattern to facilitate XML manipulations."

http://code.google.com/p/xmltool/

It seems to me that the API is very simple and easy , if we can get somewhat similar API for Apache Axiom that would be great!

Friday, September 12, 2008

WSO2 Web Services Framework for PHP 2.0 Released

WSO2 Web Services Framework for PHP (WSO2 WSF/PHP), is an open source,enterprise grade, PHP extension for providing and consuming Web Services in PHP.WSO2 WSF/PHP is a complete solution for building and deploying Web services and is the only PHP extension with the widest range of WS-* specification implementations. It's Key features include, secure services and clients with WS-Security support, binary attachments with MTOM, automatic WSDL generation (code first model), WSDL mode for both services and clients (contract first model) and interoperability with .NET and J2EE.

You can download the release from:
http://wso2.org/downloads/wsf/php

Project home page:
http://wso2.org/projects/wsf/php

------------
Key Features
============

1. Client API to consume Web services
* WSMessage class to handle message level options
* WSClient class with both one way and two way service invocation
support
* Option of using functions in place of object oriented API with
ws_request

2. Service API to provide Web services
* WSMessage class to handle message level options
* WSService class with support for both one way and two way operations
* Option of using functions in place of object oriented API with
ws_reply

3. Attachments with MTOM
* Binary optimized
* Non-optimized (Base64 binary)

4. WS-Addressing
* Version 1.0
* Submission

5. WS-Security
* UsernameToken and Timestamp
* Encryption
* Signing
* WS-SecurityPolicy based configuration
* WS-Secure Conversation

6. WS-Reliable Messaging
* Single channel one way and two way reliable messaging

7. WSDL Generation for Server Side
* WSDL generation based on annotations and function signatures, and
serving on ?wsdl or ?wsdl2 requests

8. WSDL mode support for both client and server side
* Write services and client based on a given WSDL
* WS-Addressing and WS-SecurityPolicy is supported in WSDL mode
* MTOM is now supported with WSDL mode

9. REST Support
* Expose a single service script both as SOAP and REST service

10. Provide easy to use classes for common services
* Consume some well known services such as Yahoo search and Flickr
and Amazon services using predefined classes

11. wsdl2php.php script. This script can generate PHP classes for services
and clients for a given WSDL to be used with WSDL Mode .

12. Data Services API
PHP Data Services API that enables exposing database queries as web
services.


--------------------------------
Major Changes Since Last Release
================================
* Added PKCS12 Keystore Support
* Added Secure Conversation Support
* Added Replay Detection Support
* Contract First Web Services support for MTOM
* SWA ( Soap With Attachments ) Support added
* MTOM Attachment caching support added
* HTTP Chunking support added
* REST API Improved to support HTTP verbs GET,DELETE,PUT and POST
* New PHP Data Services Solution
* WS-RM 1.1 added
* Many Bug Fixes

-------------------
Reporting Problems
===================
Issues can be reported using the public JIRA available at:
https://wso2.org/jira/browse/WSFPHP

Monday, September 08, 2008

The Evolution of a Programmer

I recently encounter this interesting entry.

High School/Jr.High

10 PRINT "HELLO WORLD"
20 END

First year in Collegeprogram Hello(input, output)

    begin
writeln('Hello World')
end.

Senior year in College
  (defun hello
(print
(cons 'Hello (list 'World))))

Read the full story here

Tuesday, September 02, 2008

Downloading Google Chrome from Mozilla FireFox

Yesterday I heard the news about Google Chrome and then I wrote a blog about that. Today I download the Googles's latest application , which is Google Chrome using FireFox. So is is fun , when I want to switch to FireFox what I did was download FireFox from IE and then switch to that. Today I did the same thing , I download the Google Chrome and publish this blog using that.

First impression is very good and I can even see that perform very well , congratulation thank you very much to Google team for doing such a great thing.


Monday, September 01, 2008

Google plans to launch Web browser

Google is always doing cool thing and other thing is that whenever google does something good most of the people started to use that. a good example for those are
- YouTube
- Gamil
- Google groups
- Google maps
- Google Spread sheet

So today I got to know that Google is planing to introduce a new browser [Full Story] . I think that would be a cool idea , however the problem is will it be able to compete with FireFox. But I believe that Google can do that . Let's wait and see , anyway if google release a new browser then I will also download and try that.

I almost forgot to add the most interesting part , have a look at introduction to it using a comic strip.

Web Service Discovery using Search engines

Few days back Kaushalye and I had a chat about features of WSO2 registry as well as supported standards. One of the reason behind the discussion was that he is doing a research on UDDI and nowadays registry like WSO2 registry. One of the issues with nowadays registry is that they do not follow an open standards , so that causes to number of issues when it come to federation and interoperability. If we just think about something like UDDI registry they are inteoperable and follow a common standards. Yes , I agree UDDI is somew hat complex and because of that not many people use UDDI in there applications. That is one of the main reason behind WSO2 registry , Mule Galaxy etc..


On the other hand if we take WSO2 registry for example , though it does not follow any particular standard for a SOA registry , which provides a way to interact with others. Which is ATOM or APP, anyone can build an application to interact with multiple WSO2 registries. So we can solve the problem of federation issues using APP. However that only among a set of WSO2 registry instances , then the problem is how can we federate and service discovery among registries from different vendors.

Let's forget about all those and focus on what I need to discuss here. The idea behind SOA registry is to

  • Register SOA artifacts like Web services
  • Mange artifacts
  • Discover them
  • Invoke them

If you look at UDDI registry , that exactly what it does.

When I read some of the articles and papers in the internet (Thank Kaushalye for the links) , I found most of the commonly used search engine (Google , Yahoo etc) can be used to Web service discovery. Those search engines knows how to talk to UDDI registries and get the data from there. I too agree that it is good if we can use search engines for Web service discovery purposes ,rather than building new applications for that .

If we look at most of the registries , they are isolated, meaning no connection with each other. So applications like Google can not find them. Then it is very difficult to do the service discovery. Therefore it is always good idea to have something like central registry. Then search engines can communicate with them and do the Web service discovery.

Therefore I think it is good if we can come up with open standard for SOA registry (of cource which should be which is much simpler than UDDI ) . And then build Crawler to talk to those registries and do the service discovery.


http://www2008.org/papers/pdf/p795-almasriA.pdf
http://www.webservicesarchitect.com/content/articles/siddiqui01.asp

Friday, August 29, 2008

Google adds for my name

Today I searched for my name (Deepal Jayasinghe) in google , then I found that google adds appearing. I was so surprise to see that , because I can not understand why someone buy my name and put theire adds. Have a look at the figure below .

Spring Web services with Axis2 – WSF-Spring 1.5 release

WSF-Spring is Axis2 integration into Spring framework. So you can use the power of Axis2 while you are in spring  environment. So this is simply a way of using Spring web services with Axis2.


You can download the source and binary distributions from the following
URL.
Project's website - downloads : http://wso2.org/downloads/wsf/spring/

Pleas feel free to send any feedback to our forum
http://wso2.org/forum/462

or our mailing lists
http://wso2.org/mail#wsfspring

For further details please visit our project's website at:
http://wso2.org/projects/wsf/spring

Thursday, August 28, 2008

IntelliJ IDEA 8: Beyond Java

An interesting interview with Dmitry Jemerov, development lead at JetBrains. Its all about a powerful Java IDE we all love to use :)


http://www.infoq.com/news/2008/08/intellij_8_M1

Wednesday, August 27, 2008

10 fundamental differences between Linux and Windows

There is a very interesting article in Linuxtoday web site. There Jack Wallen has pointed out 10 fundamental differences between Windows and Linux operating systems. I think its worth reading the full story , though I have listed the 10 point which he discussed.
  1. Full access vs. no access
  2. Licensing freedom vs. licensing restrictions
  3. Online peer support vs. paid help-desk support
  4. Full vs. partial hardware support
  5. Command line vs. no command line
  6. Centralized vs. noncentralized application installation
  7. Flexibility vs. rigidity
  8. Fanboys vs. corporate types
  9. Automated vs. nonautomated removable media
  10. Multilayered run levels vs. a single-layered run level
Irrespective of whether I agree to above points or not , I am still a windows user [sometime I use Ubuntu too :) ]

Monday, August 25, 2008

Apache Axis2 1.4.1 Released

Axis2 team is proud to announce the release of Apache Axis2 version
1.4.1. Apache Axis2 1.4.1 fixes a security vulnerability present in
Apache Axis2 1.4 policy processing.

Downloads are available at:
http://ws.apache.org/axis2/download.cgi

The Maven2 main repository has the latest jars as well.

Apache Axis2 is a complete re-design and re-write of the widely used
Apache Axis engine and is a more efficient, more
scalable, more modular and more XML-oriented Web services framework. It
is carefully designed to support the easy
addition of plug-in "modules" that extend its functionality for features
such as security and reliability.

Known Issues and Limitations in 1.4.1 Release:
- - Please see JIRA for the current status of bugs

We welcome any and all feedback at:
- - axis-user@ws.apache.org (please include "[axis2]" in the subject,
please subscribe first)
- - axis-dev@ws.apache.org (please include "[axis2]" in the subject,
please subscribe first)
- - http://issues.apache.org/jira/browse/AXIS2

Thursday, August 21, 2008

Web services class at Georgia Tech

Today I got a very valuable chance to teach a graduate class at Georgia Tech , it is interesting because I am just starting my graduate classes this fall . It was a guest lecture about Web services and Axis2. Professor Calton Pu , has to attend a conference so he requested me to do a guest lecture in his class today. I know teaching Axis2 is not such a difficult task for me , because most of the time I live with Axis2. But teaching a graduate class was bit of challenge for me , and second it made me somewhat nervous because that was the first time I did a lecture in a university. Anyway I believe I tried my best to make it simple , since the class consist of people from different areas. Teaching Web services to graduate who is doing research on Robotics or Multimedia is kind of dull job , its not there interest area.

Monday, August 18, 2008

All members of initial Axis2 team are now in US

It is almost four years we have started Axis2 , withing this small time period Axis2 has became the de-factor Java Web service framework. A number of large companies uses Axis2 in production , while well know universities are using Axis2 for various research purposes. Regardless of the usage of Axis2 , when we start Axis2 there were only five full time people working on the project. Which included , Srinath Perera , Eran Chinthaka , Ajith Ranabahu, Chathura Herath and myself. We all did our best to make what we were doing a great product. And now we can happy we have done something useful.

The most important thing is all of the initial people who wrote Axis2 , are now doing their graduate studies in USA. I personally consider that as a great achievement as far a project is concerned. Now Axis2 is a rich project with hundred of developers , let's wait and see how many more people from Axis2 will come to do the graduate studies.

Guide to Performance and Runtime JVM Monitoring

Eugene Ciurana has written a very useful article whoever working in high performance computing.

Read full story

Friday, August 08, 2008

Send and receive binary data with Axis2

I recently wrote an article explaining how to use binary data support with Axis2. That mostly covers the writing binary aware service.

See the complete article

Tuesday, July 22, 2008

Feel the taste of Rules with Axis2 – Rule Services

As I always tell , Axis2 architecture is so flexible , so you can do almost anything with Axis2. We have a number of extension for Axis2, such as

  • Data base extension
  • JavaScript extension
  • JRuby extension
  • Jython extension
  • Shell script extension and so on

Not stopping from there , we recently add one more extension to Axis2. Which is deploying “Rule services” in Axis2. We support most of the Rule engine , and you can configure your rule services to the rule engine you want and deploy that in Axis2 or WSO2 WSAS. As an example you can deploy Drools with this extension.

We have created a demo and hosted that in my home directory , and which has all the instruction you need to try the service. Try that and give us the feedback so that we can improve that and build complete Rule Service extension on Axis2.


Demo link : http://ww2.wso2.org/~deepal/drule/

Monday, July 21, 2008

Beauty and power of JavaScript – WSO2 Mashup server

WSO2 Mashup server is a web services application server which has tuned to deploy JavaScripts as web services. Which is also build on WSO2 WSAS (which is in fact built on Apache Axis2). In addition to the WSAS , Mashup sever also uses WSO2 Registry.

With WSO2 Mashup sever we can deploy JS as Web services , as well as invoke any service from JS client. In addition to this it has a number of cool features as well.

WSO2 Mashup team did their 1.5 release recently , you can try that out. It is totally free and release under Apache License.



==================================================================

The WSO2 Mashup Server is a powerful yet simple and quick way to tailor Web-based information to the personal needs of individuals and organizations. It has been
released under the Apache Software License 2.0.

This release can be downloaded from http://wso2.org/projects/mashup

WSO2 Mashup Server 1.5 - Release Note - 21st July 2008
======================================================================
"Create, deploy, and consume Web services Mashups in the simplest fashion"

The WSO2 Mashup Server is a powerful yet simple and quick way to tailor
Web-based information to the personal needs of individuals and organizations.
It is a platform for acquiring data from a variety of sources including
Web Services, HTML pages, feeds and data sources, and process and combine it
with other data using JavaScript with E4X XML extensions. The result is then
exposed as a new Web service with rich metadata and artifacts to simplify the
creation of rich user interfaces.

The WSO2 Mashup Server will form the backbone of a become an ecosystem of
community-developed services that will broaden the palette of capabilities
for mashups and distributed applications.

WSO2 Mashup Server is released under the Apache License v2.0

Check out the project home page at http://www.wso2.org/projects/mashup for
additional information.

--------------------------
Features List
==========================
* Hosting of mashup services written using JavaScript with E4X XML
extension
- Simple file based deployment model
* JavaScript annotations to configure the deployed services
* Auto generation of metadata and runtime resources for the deployed
mashups
- JavaScript stubs that simplify client access to the mashup service
- TryIt functionality to invoke the mashup service through a web
browser
- WSDL 1.1/WSDL 2.0/XSD documents to describe the mashup service
- API documentation
* Ability to bundle a custom user interface for the mashups
* Many useful Javascript Host objects that can be used when writing mashups
- WSRequest: invoke Web services from mashup services
- File: File storage/manipulation functionality
- System: Set of system specific utility functions
- Session: Ability to share objects across different service
invocations
- Scraper: Extract data from HTML pages and present in XML format
- APPClient: Atom Publishing Protocol client to retrieve/publish Atom
feeds with APP servers
- Feed: A generic set of host objects to transparently read and
create Atom
and RSS feeds
- Request: Ability get information regarding a request received
* Support for recurring and longer-running tasks
* Support for service lifecycles
* Ability to secure hosted mashups using a set of commonly used security
scenarios
* Management console to easily manage the mashups
* Simple sharing of deployed mashups with other WSO2 Mashup Servers
* Mashup sharing community portal (http://mooshup.com) to share and host
your
mashups


--------------------------
New In This Release
==========================
* Request object
* Ability to secure hosted mashups using a set of commonly used security
scenarios
* Ability to call secured services using the WSRequest host object
* Integrated Data Services Support (expose data locked up in DataBases,
Excel spreadsheets and
CSV files with ease)
* OpenID login support
* Apache Shindig powered, Google compatible, per-user Dashboard and
browser based editor support
for developing gadgets for hosted mashups (http://wso2.org/library/3813).

-------------------------
Known Issues
=========================
* Management Console was tested only on IE 6/7 & Firefox 1.5/2.0/3.0.
* Inter-service dependencies using the dynamically generated stubs may
give
deployment time errors. Workaround would be to save a local copy of the
stub
in to the dependent service.
* JSON support lacks try-it support
* Mashup editor will convert < and > characters to <> while
saving the code in the
server. This might result in malformed xml. Using these special
characters with caution is adviced.
Refer http://wso2.org/jira/browse/MASHUP-607.
* Built-in samples cannot be secured - the built-in "sample" user does
not have a keystore associated with it
(system services use the keystore of the primary account.)

---------------------------------
Future Directions
=================================
* Improved tooling support.
* An expanded toolkit of generic building-block services.
* Deep registry integration including governance, rollback, dependency
analysis, etc.
* Lots more cool stuff.

------------------------
Reporting Problems
========================

Issues can be reported using the public JIRA available at
https://wso2.org/jira/browse/MASHUP


------------------------
Contact us
========================

WSO2 Mashup Server developers can be contacted via mailing lists:
For Users: mashup-user@wso2.org
For Developers: mashup-dev@wso2.org
For details on subscriptions: http://www.wso2.org/projects/mashup#mail

Questions can also be raised in this forum: http://www.wso2.org/forum/226


Now wouldn't it be nice to have WS02 integrated on our web hosting service rather than going through shell. Maybe in the future this will be an option.

WSO2 Web Services Framework for Perl 1.1 Released

WSO2 Web Services Framework for PHP (WSO2 WSF/Perl), is an open source,
enterprise grade, Perl extension for providing and consuming Web
Services in Perl. WSO2 WSF/Perl is a complete solution for consuming
Web services and is the only Perl extension with the widest range of
WS-* specification implementations. It's Key features include, clients
with WS-Security support, binary attachments with MTOM.

You can download the release from:
http://wso2.org/downloads/wsf/perl

Project home page:
http://wso2.org/projects/wsf/perl


------------
Key Features
============

1. Client API to consume Web services
* WSMessage class to handle message level options
* WSClient class with both one way and two way service invocation
support

2. Attachments with MTOM
* Binary optimized
* Non-optimized (Base64 binary)

3. WS-Addressing
* Version 1.0
* Submission

4. WS-Security
* UsernameToken and Timestamp
* Encryption
* Signing
* WS-SecurityPolicy based configuration

5. WS-Reliable Messaging
* Single channel two way reliable messaging

6. REST Support
* Expose a single service script both as SOAP and REST service


-------------------
Reporting Problems
===================
Issues can be reported using the public JIRA available at:
https://wso2.org/jira/browse/WSFPERL

Thursday, July 17, 2008

Scripting support with Axis2

As we all know Apache Axis2 is a Java based Web service framework. In addition to that Axis2 is becoming as the de facto Java based Web service framework. Which is obvious when we look at the number of daily downloads as well as a number of companies who use Axis2. It took about four years to come to this position with great support from the community.

Now we can find a number of scripting languages which run on JVM. If a scripting language is running on the JVM then we can easily write scripting extension to Axis2. At the moment Axis2 has scripting extensions for;

Meaning of language extension is , one can deploy scripting services in Axis2 as well as one can use scripting language to invoke or access a service deploy in anywhere.

With the Axis2 architecture , we can easily plug a new language extension. It is just a matter of writing few components and registry in Axis2.

  • Deployer – to process the scripting file and create a Web service from that
  • Schema generator – Generating schema from the scripting class , for example if we are deploying a JS file , then generate corresponding WSDL
  • Message Receiver – when a message receive for that particular service , it will first come to the message receiver and that will invoke the scripting class and send the response if any.
Registering an extension in Axis2 is just a matter of adding your custom deployer in to axis2.xml.

If you're getting a new host, don't forget to check your hosting service if it supports Axis2.

Monday, July 14, 2008

Spring Web services and Axis2

As you know Axis2 is a Web service framework which has support many things. It has support for scripting languages , it has support for data services and it has support for EJB , Corba and etc. In addition that since a long time it has support for Spring as well. With that you can deploy Spring bean as Web services in Axis2. Yes I agree it is yet another way of getting the thing done. I also realized that is not enough for spring developers. They need everything works on spring.

To solve that in WSO2 we came up with a solution where we have integrated Axis2 into Spring. When doing this we have convert all the axis2 configurations files into bean descriptors , for example we came up with a set of beans for axis2.xml. With this we have integrated Axis2 smoothly into Spring. After thing anyone can easily expose a bean as a Web service. And get the power of all the other WS* support , such as security , reliability etc. , above all you can get the power of Axis2 while you are in spring container.


With this approach you can make a bean into a Web service just using following line of codes



<bean id="services" class="org.wso2.spring.ws.WebServices">
<property name="services">
<list>
<bean id="helloService" class="org.wso2.spring.ws.SpringWebService">
<property name="serviceBean" ref="helloworld"></property>
<property name="serviceName" value="helloWorldService"></property>
</bean>
</list>
</property>
</bean>

You can read more about Spring support from the following links

WSO2 Web Services Framework for Spring

Hello World with WSO2 WSF/Spring

Sunday, July 13, 2008

Announcing: New Google C++ Testing Framework

The folks at Google have recently open-sourced their xUnit-based testing framework for C++ development. The framework is said by project developer Zhanyong Wan to have been in use internally at Google for years by thousands of their C++ developers.

Read the full story

Multiple source directories with maven2

Without any doubt I can tell that Maven and Maven2 are very powerful project management tool, specially very useful for project building.

As I remember correct in maven1 it had a way to add multiple source directories , however when I switch to maven2 , I found that it does not have support for multiple source directories by default. Recently I got the requirement of adding multiple source directories for WSO2 Registry sample module. That module has few sub directories and I do not need to treat them as module. What I wanted was to add them as source directories in the sample module. So when I do the googling I found a very cool maven pluging called “build-helper-maven-plugin” , which helps us to add multiple source directory to a single module.

Structure of the sample module is as follow;


samples
-- handler-sample
--src
-- filebased-sample
--src
-- wsdl-sample
-- src
-- collection-handler-sample
-- src
-- custom-ui-sample1
-- src

So the corresponding pluging configuration is as follows



<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>handler-sample/src</source>
<source>filebased-sample/src</source>
<source>wsdl-sample/src</source>
<source>collection-handler-sample/src</source>
<source>custom-ui-sample1/src</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>

Friday, July 11, 2008

Failures in Agile Develoment

As Agilists we love to talk about our successes but its much harder to talk about failure.

Read the full story

Thursday, July 10, 2008

Apache ODE 1.2 Release

The Apache ODE community is proud to announce its latest 1.2 release
that includes many new features, improvements and bug fixes. Apache ODE
is a WS-BPEL compliant web services orchestration engine. It organizes
web services calls following a process description written in the BPEL
XML grammar. Another way to describe it would be a web-service capable
workflow engine.

Highlights of this release:

* External variables: variables used in a process are not opaque to
the outside world anymore. You can map them to a simple database table
and manipulate them directly.
* Support for the WSDL HTTP binding. We've also added a few
extensions, allowing the invocation of REST-style web services.
* Advanced endpoint configuration which, thanks to the integration
with Apache Axis2, enables WS-Security and WS-RM support.
* A long list of small fixes and improvements for best-of-breed
stability, performance and usability.

In addition to these new features, Apache ODE provides the following
functionalities:

* Side-by-side support for both the WS-BPEL 2.0 OASIS standard and the
legacy BPEL4WS 1.1 vendor specification.
* Supports 2 communication layers: one based on Axis2 (Web Services
http transport) and another one based on the JBI standard (using
ServiceMix).
* High level API to the engine that allows you to integrate the core
with virtually any communication layer.
* Hot-deployment of your processes.
* Compiled approach to BPEL that provides detailed analysis and
validation at the command line or at deployment.
* Management interface for processes, instances and messages.

For more information, check the Apache ODE website: http://ode.apache.org/.

Apache ODE is an open source project released under a business-friendly
license (Apache License v2.0), as such we welcome all your help and
contributions. To participate and get involved, our mailing lists are
the best resources to start from: http://ode.apache.org/mailing-lists.html

SOA triple play: Policy meets Semantic Web

Triples, a programming grammar developed by W3C for its Semantic Web initiative, is incorporated into WSO2's newly released Registry 1.1. The open source SOA vendor is moving toward a triples-based language that will allow users to encode their own governance rules and policies.

Full story

Wednesday, July 09, 2008

Google open-sources data exchange language

"Google uses "thousands of different data formats to represent networked messages between servers, index records in repositories, geospatial datasets, and more," wrote Kenton Varda, a member of Google's software engineering team, in a blog post. "Most of these formats are structured, not flat. This raises an important question: How do we encode it all?""

Read full story.

Let's wait and see how we can use these in our applications .

Tuesday, July 08, 2008

SOA and Open source ESB

As I have mentioned in my previous posts , SOA is becoming the next generation of the IT industry. Not only that Web services provide major contribution to that. Just having Web services does not make SOA complete. There are a number of factors which are necessary for making SOA complete , or moving company into so called SOA.

When a company want to move into Web services , one of the first thing they need to focus on is the web service framework they are going to use. There are number of good open source and commercial web services frameworks around , you can pick one which match with your requirement and then enable Web services in your company. If you are looking for an open source solution then Apache Axis2 would be a good candidate. I am not recommending Axis2 , since I am an Axis2 developer , but it so extensible , flexible as well as easy to use , above all it inteoperates with other open source and commercial web services stacks.

In one of my previous post I mentioned about one of the other key part of SOA , which is SOA registry. And recently I did a feature comparison on WSO2 registry as well as Mule Galaxy.

Next major component which make SOA complete is ESB or Enterprise Service Bus. There is no clear definition for ESB , different people have different opinions on that. In my view ESB is a bus which connect different kind of applications together and provide a way to talk to them in application independent manner. Web service provide right infrastructure for that providing SOAP based interaction. With ESB one can talk to different kind of applications and can connect different kind of applications. For example we can connect data service , main frames and messaging queue together using an ESB.

The requirement of ESB depends on the type of application you have , if you have just Web service application then you might not need an ESB, however if you have different kind of applications (say Java and non-Java applications) , then to connect such application we need an ESB.

There are a number of ESB out there , and you can find both commercial and open source ESBs. It is not surprise to see that open source ESB performs better than some of the commercial ESBs. WSO2 recently did a performance comparison , you can read them and make your decision. In Apace domain , there are two ESBs , Apache Synapse and Apache ServiceMix.

Apache Synapse (or WSO2 ESB) is built on Axis2 and ServiceMix is built on CXF. I like Apache synapse due to few reasons , first it is built on Axis2. Second I was able to write the very first synapse toy based on the current architecture , third it seems to be the fastest ESB.

Sunday, July 06, 2008

Axis2 based open source Application server – WSO2 WSAS

There are different types of application severs , not only that when we say Application server , then the default meaning is J2EE application server. Then how about Apache Tomcat ? , well we all tell it is also an application server. Then what is WSO2 WSAS , is it an application sever , yes which is also an application sever , however the difference is rather than deploying generic applications (web applications) , it allows us to deploy a particular type of application. Which is web services.

WSAS stands for Web Services Application Server , as I mentioned earlier which is a sever where we can deploy Web service. I know Axis2 is very flexible and easy to use Web services framework. Not like Axis1 , getting stuff done with Axis2 is very easy as well. If we want Reliable messaging , then its just a matter of coping Sandesha mar and deploy that , same for the security as well. You do not need to have any global configurations.

Then why do we need WSO2 WSAS ?

The answer to that questions is very simple , if you download Axis2 then you only get Axis2 or Web service support. Then how about if you want to enable security of reliability , then you have to download those libraries and configure. When it comes to WSAS , it has done all those for you. Not only that it provides a very nice UI to configure one of the very difficult and complex part in Web services , which is WS-Policy.

If we look at the features of WSAS , we can find a number of thing , but among those there are few features which I really like as Axis2 developer.

  • Run time transport configuration – WSAS allows you to add , stop and run transport at the runtime
  • Clustering support – Which has very good support for both context replications (action associate with context hierarchy) and description management (action associates with description hierarchy such as AxisService , AxisOperation and etc ).
  • Message logging – We can easily turn of turn on the message logging and see what are the message going here and there. This is really cool and handy for the transports other than HTTP.
  • Code generation with maven build file – I found this is really cool , because when we give the WSDL it generates the code , compile that and generate a maven file. So that I can just run that and get the job done.
  • Data service support – With WSAS we can easily expose a database as a Web service

Well there are many more features that you might find useful for you. If you are an Axis2 user try with WSAS as well , that might help you to reduce some of the work you do with Axis2.


WSO2 WSAS became Products of the Year 2007


Scaling Java EE Applications

Wang Yu , has written a very interesting and useful article about the Java EE application scalability and their issues.

"If an application is useful, then the network of users will grow crazily fast at some point. As more and more mission-critical applications are now running on Java EE, many Java developers are caring about scalability issues. However, most of popular Web 2.0 sites are built with script languages, and there are a lot of voices to doubt the scalability of Java Applications. In this article, Wang Yu takes real world cases as examples to explain ways on how to scale Java applications based on his experiences on the laboratory projects, and at the same time, bring together practice, science, algorithms, frameworks, and experience on failed projects, to help readers on building high scalable Java applications."

See the full article

Thursday, July 03, 2008

Why companies are reluctant to use Open source

One thing is obvious that the future of software is nothing but open source. Time has come to the point where ability of competing with open source products is not an easy task anymore (to whom ? ) . Knowing this fact most of the well know companies are either moving to open source , making their source open , contribute to open source projects , or acquire open source companies.

If we look at the todays market it is obvious that the open source has more than enough influence in the industry as well as it has gained the recognizing , there are the people who decide the future of the industry. To get the idea more clear let's have a look at some of the well know open source projects

  • Apache Web server – no doubt which is most famous Web server
  • Apache tomcat – Application server , we all know and we all use
  • Linux and Ubuntu – World famous open source operating systems
  • Eclipse – Widely used Java IDE
  • Open office – We all use open office
  • And many more ....


I know I can name dozens of products , but which is not the idea of this post.

There was a myth saying that “do not use open source , since no support” , do you think this is true anymore ? If so you think so than you are wrong. Now we can find companies doing open source consultants , services and supports , so no need to worry about the support. In addition to that if you look at the mailing list you can see the level of supports you get. For example if you look at the Axis2 and Synapse mailing list you will realize the difference, not only on those two list most of the Apache mailing list are so active and you can get very good support.

In addition to that from one of the mailing list I saw that someone is telling that the level of support he got is much more better than the support he gets from a commercial product. This is just an example for you to understand the trend.

Yes , I agree there is a mindset that some of the people have that the open source products are not good and not in the right quality. They always want to use the products from well known companies. The reason is they only trust the projects from those companies. IMO which is also a myth , the reason I am telling this is , if we look at an open source project which has a very good community. And all most all the time that community is consisting with very well know personality in a particular area. So the out come of that is obvious. Even the quality is good and always projects meets the standards , and might intemperate with other open source projects as well as commercial projects.

When we look at the level of support , quality of the products , number of features , meets of standards , there is no single reason not to use open source. Sometime you can use some of the projects without getting any support. Because you can find very comprehensive documentations about the projects , if you have any problem you can read and understand easily. In addition to that project like Apache Web server , Apache tomcat , Apache Axis2 are matured projects and number of people use the projects is countless.

Nothing to worry , no need to reluctant about open source. Use it , help it , contribute it and benefit from that.

Future is open source !!!!

Wednesday, July 02, 2008

Seven Reasons to Move to Linux

Linux is a great solution for small business customers because it helps them avoid high licensing costs, viruses, vendor lock-in, hardware upgrades and unstable servers and desktops.

See the full story.

Open source competition - Mule Galaxy vs WSO2 Registry

Competition is everywhere , it does not matter whether commercial or open source different people tries to compete with others. Not only in different domains , in same domain as well. If we look at in Apache there are two well know Web services frameworks (Axis2 and CXF) , and there are two Enterprises Services Buses (ESB) (Synapse and ServiceMix) . Those are just simple examples for the competition we have in same domain. As I mentioned in one my previous blog , open source is a social activity. Therefore better the quality of the product , then thats good for the end users. So in my view having competition is very good even among the open source vendors.

WSO2 released its Registry/Repository product in recently , in the mean time Mule source released their Registry/Repository product in few days back. So yesterday I download Mule galaxy and play with and went through its feature page. Then I realized that both the implementation are doing all most the same thing , almost the same manner.

So I started to write a blog yesterday doing a comparison between WSO2 registry and Mule Galaxy , unfortunately it become a too long , so rather than writing everything in my blog I wrote and publish an article. Have a look at the features of the two products and see which one suit for you.

Read more about that .

Web future and Semantic Web

Semantic Web is around in the field for few years and most of the well know universities are doing research on the filed of semantic Web. Among them universities like MIT , UMBC have done very good progress as well. Though it is around for that many years I do not see that much adaption in the industry , one reason could be it is still in the research level.

When I was doing some reading on the semantic web I found a few very useful documents.

  • A presentation by Prof Tim Berners-Lee .
  • The Semantic Web provides a common framework that allows data to be shared and reused across application, enterprise, and community boundaries. You can think of the Semantic Web as an efficient way to represent data on the World Wide Web, or as a database that is globally linked, in a manner understandable by machines, to the content of documents on the Web. Semantic technologies represent meaning using ontologies and provide reasoning through the relationships, rules, logic, and conditions represented in those ontologies. Read more
  • Some serious computer scientists, although cautious about the promise of the Semantic Web, are ultimately optimistic that it will be everything developers are hoping for -- an online source for all of the knowledge humanity has created in science, business and the arts Read more

Monday, June 30, 2008

Open source development and IntelliJ IDEA

When I start to learn Java first thing I use was notepad , I wrote the program in the notepad compile and run. Actually that helped a lot to learn most of the code quality there , however one of the issue was I it took more time to do a simple task. The problem become worse when we want to debug something.

After that I started to use Jbuilder when I move to that I realized the power of using an IDE to develop Java applications. It saves most of our time on importing and debugging. While I was using Jbuilder I started to use IntelliJ IDEA (Thank Ajith for pointing to that), then I realized the power of that tool. In my personal view it is the best IDE I have ever used. And I should say I have addicted to IDEA , if it is Java development the only IDE I like is IntelliJ IDEA.

Luckily I am an open source software developer so I can get an IDEA license free , so for me IDE is free. And I should not forget to say thanks to jetbrains for giving us free license.

There are a number of reasons I like IDEA over other IDEs.

  • First thing it saves most of my times , time is very important for me so a minute is also important for me. I do not want to waste my time unnecessary setting up projects and adding libraries. When it comes to IDEA it is great.
  • Debugging – I have never seen an IDE which has that much of support for debugging. Code debugging is very important for me. It has a number of options we can use to debug the code. That helps me in two ways , first it saves my time , second it provide more than what I want to do my job.
  • Support for multiple modules – Since I am working on a projects (Axis2) which has a number of modules so it helps me a lot. (I know some other IDE has this feature)
  • Starting Applications severs and remote debugging– When I develop web applications this feature help me a lot.
  • Code formatting – It format the file according to the type , for example Java files according to the Java template , Xml as XML document
  • Code analyzing – No matter how good we write code , there may be some problems and issues with the code we write. IDEA code analyzer help me to find out the issues with the code we write, cyclic dependencies , code duplicate and etc.

I know there are much more useful features than I have mentioned here , but above are the most frequent features I use in my day to day life.

One last thing to note here is that the idea of this entry is not to market any IDE , but to tell my personal opinion about that.



Few other blogs about their IDEs

Ten Fantastic Keyboard Shortcuts in OpenOffice.org

Since most of us use Openoffice I think knowing the following shortcuts will be really helpful.

http://www.freesoftwaremagazine.com/columns/ten_fantastic_keyboard_shortcuts_openoffice_org

Sunday, June 29, 2008

Real open source development

Open source software development can be considered as a social activity , because whoever develop the product give away free, therefore the society is benefited from that. In my opinion the definition of open source software development is a controversial topic , and different people have different definitions for it as well. However I see open source software development as a community driven activity. All the decisions are taken by the community , and all the development also done by the community. A community can be consists of individual, organization or companies , irrespective of who they are when it come to open source there is no hierarchy as such. Everyone in the same level , in one stage everyone become architectures , in one stage everyone become developers , and it some other stage everyone become tech writers and so on.

Now let's look at actors of open source projects , to get the idea clear let me take Apache Axis2 as a sample projects. We can classified actors or contributors into following category.

  • Designers – whoever helped to design the project
  • Developers – People who developed the projects
  • Testers – Users who test the product and give feedback
  • Users – Whoever use the project , product become useless if they can not find users who use the projects
  • Trainers and consultants – People who conduct training on the product , who spread the word about the project and teach others how to use the projects
  • Tech writer – People who writes articles , book , papers and etc.. , telling how to use the projects

Most of the above category are interrelated , and helped to bring the project forward. And all those people are need in order to improve the project as successful project. Sometimes single person belong to one or all of the above category.

Just having the community around and keeping the source open does not mean the project is open source. The community should allow different people to carry out different activities. In other word if some one want to do training on Axis2 then that should be possible irrespective of whether he is a developer or not.

And the community should not be driven by an individual or a single company , it should be a community. It is essential to listen to other people and other companies. That is the key factor behind success of an open source project. Not like a proprietary project , open source project may have opinions from a number of different people , sometime all those are leaders in particular area. So thats help a lot to improve the quality and outcome of the product.

When I consider about the open source license I really like the Apache License because it gives the full freedom to the end user to do whatever he wants with the code. He can get the code modified as they wish and do whatever they want with that, may be release as open source or sell.


Friday, June 27, 2008

Moving Apache ODE into maven

These days I am using Apache ODE (open source BPEL implementation) heavily to provide the ability to deploy BPEL services in Axis2. As I mentioned previously in my blog I got what I want working fine. However having that is not enough I need to write a build system for the component I wrote. When doing so one of the major challenge I faced was getting maven2 working with Apache ODE. I agree they have all the artifacts in the maven repo , but adding other dependencies is a challenge.


One of the issue behind this is ODE does not uses build system like maven, so the projects depends on Apache ODE have to a high amount of work to get the work done. Not only that since ODE is not having build system they can not give us the nightly builds too , so we can not add the project dependencies to ODE snapshots.

Considering all those I think , it would be good Apache ODE can move into maven2. If they want I can definitely help for that.