Tuesday, August 26, 2008


Today, I was surfing the net and reading some articles. I read a comment about something that mentioned the Java based OS; JNode.. WOW...
Finally.. I am very happy for it. Very happy more than any one can ever know.

Last year I was thinking why not having a Java based OS. Imagine you can just simply write Java code and save it locally and then type a command to compile it (i.e., compile MyFile.java) and to run it, just type: MyFile
Any way,.. this is not the case. But it still could be done.
I really like it very much... :)

I was thinking of such an idea by eliminating the entire native part and moving the JDK to be part of the processor or something. That was in my previous (old) blog entry I had.

Well, of course, it had a lot of troubles for having the native related stuff moved to the processor as mentioned in the comment. But any way.. it was just an idea.

Still, I am very happy for the JNode project. I wish it would make it to the public and be a well known OS. Best of luck.. :)


Tuesday, July 15, 2008

And I have another crazy idea...

It's been a while now since I had this small idea in my head. Some people may thing that I am crazy...
But what the heck.. all brilliant ideas and thoughts were considered to be crazy at its early stages :)

Imagine that you can go to your favorite search engine, Google for example, and you go find the following options
1- Web (text search) - which already there and the default
2- Images (based on text search) - which is already there an accessed when you click on Images
3- By image (which the idea I have).

The idea is very simple:
You upload an image you have, and then click search.
- The search result?
It will be any URL or page that contains or references the same image.
- Why?
1. Cause I cannot remember how many times I saw a picture of something and do not know what is it and wanted badly to know.
2. Cause I cannot remember how many times I saw a picture of someone/something and I was hundred percent positive that I saw it before somewhere on the web but I cannot remember where.
3. Cause you may have a picture of someone you know and have not seen him for a while. One of the options to find him would be using his picture (names may change or not be used).
4- It is still a good idea.. :)

Well, I know that such a search engine would take a lot of time doing processing (I have seen it in the movies with specific comparison points of the face - US Police and FBI search for criminals).

It is implemented, and it is there.
It is heavy a processing search. I know all of this.
But still, why not having it public like text based search...?

Well, it is a crazy idea.. :)

Distributing a Java Application via CD-ROM - Why?

Today, I was checking Java.net web page. I read the article of Distributing a Java Web Start Application via CD-ROM

Well, that is my initial thinking of its possible usage scenarios:
1- It could be used for installation CDs
2- It could be used for making a demo CD with and embedded server (Tomcat or Glassfish) and the application deployed to it. And having this CD sent to the client
3- It could be used for making an auto-update CD for an already deployed application (sending the application update on a CD to the client which all he has to do is to insert it into the CD-Rom and it would update the already deployed application).

Sunday, July 06, 2008

First time to Maven

Today, I was navigating Apache.org website. I ran into the Cocoon project. Out of curiosity, I opened it. I know the project 5 years ago and I thought that it was closed (obsolete). I don't know why I always had this thought in mind, but any way. I was really amazed that the project is still open and still has activities (latest as the time of this writing is: Cocoon 2.2.0 Released on 5/15/08

Any way, while reading the documentation (Your first Cocoon application using Maven 2); I ran across this link: Maven in 5 Minutes Which lead to this link: Maven installation instructions
It's been a while since I wanted to run maven and get used to it. So, I started downloading Maven 2.0.9 immediately and began the installation instructions.
After that I went back to the Maven in 5 Minutes which made me confused about two things:
1- In the "Creating a project" section, there is the following comment:
"If you have just installed Maven, it may take a while on the first run. This is because Maven is downloading the most recent artifacts (plugin jars and other files) into your local repository. You may also need to execute the command a couple of times before it succeeds. This is because the remote server may time out before your downloads are complete. Don't worry, there are ways to fix that."
2- I created the project any way, and continued to building it. Now although the previous mentioned comment, and although I find it very strange to go through downloading all these JARs in the creation phase, it started to download the JARs again to build the project..!!

I think that it should not have downloaded extra JARs in the first place, and I think that it should not have downloaded them again.
I did not try it; but I am afraid of having to download all the JARs every time I try to build the project.
I think that this is nonsense. If Maven is requiring these JARs, I think it should be available in the downloaded file itself, if not, it would be downloaded once and for all. Or may be, added by the user himself into the lib folder or something.

Any way,...
That was just a try. May be I would explore about this more or explore the documentation section later..

Now, I'll get back to the new Cocoon.. ;)

Wednesday, June 04, 2008

Eclipse IDE Introduction

The Eclipse IDE is a very rich and easy to use. But; as a senior developer who have been all the time in contact with, and sometimes giving courses to junior developers; I found out that with the following introduction about Eclipse, I help them to have a faster startup time. So, I thought of sharing this quick introduction of Eclipse IDE to everyone.

This introduction will not be including any screenshots of Eclipse.
But it will only introduce what is Eclipse, how is it organized, and how to look at it as a tool for helping us writing code.

Eclipse is an Integrated Development Environment (IDE) that contains a set of tools to help an application developer building his application.

How Eclipse is organized? To answer this question; let’s have a quick look at any Enterprise Java Application and what is its main components.

Any Enterprise Java Application (EAR); and let’s take it from the widest perspective; is an application that may contains some Web Applications (WARs), may contain some Enterprise Java Beans (EJB JARs) and may contain some utility JARs.
Also, the application, from the business point of view, may contain web application, some business logic, and a data model.
The data model could be Database or XMLs ruled by XSDs or DTDs, and could be both.
Of course, your EAR would require a server to run on. And of course the server will generate some output to the console.
Having all of these in mind, we find ourselves expecting to have too many tools to help developing such an application or simply, no tools at all. Eclipse IDE, provides too many default tools (plug-ins) that are downloaded together as a bundle and also supports adding more tools (plug-ins) to the downloaded bundle. You can even create your own.

Back to our question: How Eclipse is organized?
Now, as a developer, you would be having a task assigned to you. This task could be only related to JSPs and Servlets, or could only be related to EJBs. Eclipse IDE provides something that is called "Perspective".
The perspective is the way you are looking to your application at the moment. Are you looking at it from the web components side, EJB components side, or may be from the configurations side (XMLs and XSDs). Imagine the application as a car. You need to check something at the inside of the car; you would go to the inside-perspective. To check your car’s breaking lights; you would go to the rear-perspective. And so on.
For each side (perspective) you are looking to your application, you would find the common tools that are used for that perspective of the application. For web perspective, you will find the set of tools that are focusing on editing JSPs and Servlets and putting their configurations.
For the XML perspective, you would find the XML and XSD editors in hand providing you with a GUI for editing these files.
For the Java perspective, you would find the tools to inspect Java files and edit them. For the database perspective, you would find the tools needed to connect to a database and another tool for browsing the database tables. And another tool for writting and executing SQL statements.

For each perspective, you’ll find the right tools. These tools are called views. Some views are used for editing, some are used for only viewing properties, and some are used to view output.

Of course, for each perspective, the set of tools that appears are the default commonly used tools for that perspective. You can customize that perspective and add more tools (views) to your perspective and even you can customize your current perspective and save it for having it as one of the default perspectives for that workspace.

Well, that's it.
Looking at Eclipse this way, makes it much easier to use. At least that's what my colleagues told me.

Tuesday, May 13, 2008

Dear Manager, can we develop an OSGi based application, please?

For quiet sometime now and I have been thinking of a new application framework. It's an application that I had in mind for quite sometime now. And it's the same application that my managers have in mind.

It's a big application that we are thinking of.
But I wanted to do it differently this time. Different than my managers think of it.
I did not want to have it as an application that is Struts , JSF or any known or unknown framework. I just wanted to make things different.

Yet, I do not like to create our own framework (like we did in one of our projects in the company).
The learning curve for internal frameworks are very high (usually) and the cost of having new members into the team is all the way up to the top of the curve.

So, the solution for such a big product, in my opinion, is to have it as simple as possible with one role:
"Stick to standards"
In this case, what ever project\product you have, you will always have only the cost of business related learning curve (if you have any).

Well, to solve this, in my opinion and according to the so much little I know about the standards out there, I only found Eclipse as a very good to what I had in mind.
1- 100% standard application.
2- Modular: very easy to run\remove plug-ins. Just drop the required JAR file in a specific folder, and restart Eclipse. WALLA.. It's working. The plug-in is loaded.

Well, for quiet sometime now, I was wondering how is it done.
I think today I got the answer, OSGi. I am not sure if I am correct or not, but at least that's what I think. If not, then what ever it was, I do not mind. But I will take the OSGi way.

Yes, that's it. That's how I will do my next application. OSGi bundles that are bundled according to the business units we have in the application. The more business units you would like to have, the more OSGi bundles you would create.
This way, you would very easily have the same application running with different functionalities according to the deployed bundles.
And still, you would have it according to the standards.
So, the learning curve is not that high. At least that's what I think.

I know that I am not the only one who thought of it this way.. :)
OSGi is there already. Eclipse is there already.. etc.

But the type of application I am talking about to be based on OSGi, that would be new thing.

Well, enough talking and back to work, may be I can convince my managers of having the new application the way I think, instead of the way they think.
And that would be the day.. ;)