All That I Know

July 21, 2007

Great Java Resource For Coders

Filed under: Java

Came across this really awesome website today:
http://www.java-source.net/

It has categorized Open Source Java based frameworks and ready to use components like PDF libraries, Mail clients, XML GUI toolkits, blogs, network servers etc. What I like about this website is its ease of use, nice clean design and good categorization.

June 4, 2007

Your Website On A Mobile

Filed under: General, Java

I came across a very interesting website today. It has a Java applet based emulator that shows you what your website will look like when seen on a mobile. It is no secret that more and more people are browsing the internet using mobiles. It is getting important that developers make sure that their website is properly viewable on a mobile. Check out the site here.

Powered by ScribeFire.

May 22, 2007

Open Source For Enterprise Development

Filed under: Java

I came across a very good article for Java developers targeting the enterprise highlighting ten open source projects. Here is the link.

Powered by ScribeFire.

March 5, 2007

SAP Code Gallery

Filed under: Java

SAP has recently started a code gallery for programmers for the Netweaver Platform which is based on Java Enterprise Edition. SAP is one of the most widely used software in the Enterprise arena and is one of the most expensive software, owned by Siemens. You can access the code gallery here.

powered by performancing firefox

March 21, 2006

Java Rules The Enterprise

Filed under: Java

Java has rocked the world of Enterprise Software Development. Almost all major Enterprise Software is being developed using Java based technologies, at least when it comes to the server side development. BEA, SAP, IBM, Oracle … and the list goes on.

But what difference does it make to an end user? The end user who uses the system at the end of the day to make Account Entries or manage inventory does not care and does not know the difference between whether he is using a system developed using Java or PHP or C++, especially with the new fast CPUs. What does make a difference is whether the software is well designed and whether all different operations of the company are well-integrated or not.

SAP has been providing a robust, integrated software solution to enterprises to manage their everyday tasks. Their R3 software integrates financial functions, inventory management, accounts, sales and distribution. It also allows additions to the system with customized programming. They have the most mature software in the enterprise software market. Even they jumped on the Java bandwagon.

So why is it that companies are moving to Java based technologies? Why has PHP not been able to penetrate into the enterprise as well? And what was wrong with the old way of doing things with C and C++?

To understand this you first have to understand the requirements of an enterprise, exactly why does it need such over-priced software.

I will continue this in another post …

December 21, 2005

The Problem With Java Client Development

Filed under: Java

I love Java as a language and as a platform. It is a very clear language to understand and there is a plathora of code available on the web for you to put together a relatively complex application together in no time. It has the support of far too many companies to mention here and it also has the seal of approval from Open Software and Free Software developers.

I recently looked up into decompilers for Java programs and I was horrified to see the results. A Java program can be decompiled back into its original source code with very little work. There are many free and commercial decompilers available. I decompiled one of my older programs that I made for a client (who never paid up) and it was converted back into its original source code within seconds.

This prompted me to look up into how I could make sure that my Java programs would be safer from decompilation. There are 3 techniques to do so:

  1. Obfuscation: This is the process of changing the class / method / variable names so that they are not easy to interpret once decompiled. It does not stop decompilation though, just makes it slightly more irritating for the one who is trying to decompile your code. But keep in mind that it does not change the names of the core Java API packages/methods etc. So your algorithms are pretty much given away to the one hacking your code.
  2. Compilation to Native Code: You can compile your Java code to Windows or Linux native code like for a C/C++ program which can be decompiled but not easy to make sense of the decompiled code. A person like me will not be able to do it. Two programs used by programmers are the commercial Excelsior JET and the open source GCJ. Excelsior JET has licenced the J2SE code from Sun Microsystems so your code will not break at all. GCJ still lacks a lot of J2SE packages and classes (e.g. there still no AWT implementation). So your code will break a lot.
  3. Light-Weight Clients: This is a client / server approach for applications where the actual bulk of the program logic resides on a server and the client is mainly used for display purposes. So if the end user decides to decompile the Java client the most he will get out of it is the code for displaying. He will not be able to alter how the logic of the program actually works. This might be perfect for enterprises that will deploying the application in an intranet environment but it is not sufficient for standalone everyday use applications like editors, mail clients etc.

Come to think of it all those free applets out there can be easily decompiled, code changed, your company logo added and then served on your own webpage without anyone ever finding out.

I think Sun Microsystems should provide a free compile to native code compiler with their SDK for people who want to keep their source code safe from hacking attempts.

March 8, 2005

What is an Application Server?

Filed under: Java

A friend recently asked me about the difference between an Application Server and a regular server program that is created using sockets in Java or C/C++. I explained to him that when a developer creates a regular server that locks on to a port listening to client requests, he is in charge of everything that the server program does. This sounds good at first since the developer is free to do whatever he wishes, but when creating an advanced and sophisticated piece of software that has requirements for clustering support, database connection pooling, web services, standards compliance, cross-platform deployment, database abstraction, webpage serving etc., the developer would go crazy trying to implement all of them on his own.

But one could also argue that all these advanced features can also be implemented using bits and pieces from different libraries/packages developed by different vendors and open-source projects. A C/C++ developer could use the Beowulf libraries for clustering, DBStep for database abstraction and so on. A Java developer can use JDBC for database abstraction, use elemenope for scalability and client/server messaging, Apache Axis for web services, Apache Tomcat for serving dynamic webpages etc.

Now using these different libraries does solve the purpose but they create new problems. There is no integration between these various libraries therefore each library has to be managed seperately. If tomorrow Apache Axis decides to make an update to their software and the developer wants to use the updated version as part of his software, the new version might interfere with a part of the elemenope code.

An integrated environment is one where all the sub-parts have been designed specifically to work together and not to interfere with each other’s work. An application server gives you just that; an integrated set of libraries that work together to give developers a platform that provides all the functionality they need to create an advanced application.

But what about all the different Application servers out there, for Java, XML, PHP etc. Whats the difference there or why should a developer use one over the other. And why should a company opt for an expensive commercial application server when he can use an open-source alternative. I came across this article on the SYS-CON website which has the highlights of just such a discussion.

February 25, 2005

Java Open Source Projects List

Filed under: Java

I came across a very good article highlightling a lot of mature and major Open Source Java projects that are being used in companies around the globe, and I thought I would share it on my blog. Go to “Opening Up Java Projects to Open Source” and read all about it.

The existence of so many Open Source projects based on Java is also a proof for it being a Mature language that can and should be used to develop applications.

January 26, 2005

Open Source Java App Servers

Filed under: Java

The world of Java Application servers has been very confusing, so many to choose from. Now more and more open-source versions are popping up. Most of them are based on efforts by the Apache Foundation who have worked hard on creating the base components required by a Java Application and Web server. They started with Tomcat which served as the official Reference Implementation for the Java Servlet and JavaServer Pages technologies. Based on Tomcat a whole plathora of servers were born.

JBoss is probably the most widely used and J2EE compliant Java server around. Its core is based on Tomcat.

A while ago I saw Jetty which is 100% java and is a FAST JSP and Servlet server, 350 kb is size.

Today I found Gluecode JOE, which has an open-source version as well as a FREE Standard version which has clustering support. It also relies heavily on Apache-based open-source software. The Apache Geronimo application server is its core, it uses Jetty as the web/servlet server, uses the Apache Pluto portal framework and Apache Derby as the default database. With the Standard edition you get an Enhanced Management console and optional clustering support.

Apache Geronimo is the J2EE server project of the Apache Software Foundation. Its currently passes Sun’s TCK for J2EE 1.4. More on this later.

January 11, 2005

Java Development directly from a CD

Filed under: Java, Linux

I came across the best thing for Java developers while surfing the net last week. A Live CD with Java development tools on it, Pollix. Just boot your computer using this CD and you have J2SDK 1.4.2 + Eclipse + Netbeans + BlueJ + a whole lot of other dev tools with a complete Linux GUI OS.

Plus it already has Java servers like Tomcat and JBoss installed and ready to run as well. No more installation nightmares for newbees who just want to learn.

Who would want to use this. Well if you are a student and:

  • you want to have the best Java dev tools all on one CD
  • you need to show off your Java work in a presentation using someone else’s PC
  • your netwrok admin has allowed people to boot PCs from a CD, you can have your whole development environment on a CD and can start working using any PC; you will not care about what is preinstalled on the PC itself.

This is also a great tool for Java teachers to recommend to their students. I have come across a lot of Java newbies who have trouble even setting up environment variables. I think this is a very good resource for teachers and students alike.

I have seen very often that in universities and schools the sysadmin installs Windows on all machines and students do not get a chance to see Linux at all. I think Live CDs is about to change all that. Its all about spreading the word.






















Get free blog up and running in minutes with Blogsome
Theme designed by Minz Meyer