Sunday, June 16, 2013

Making order in the new programming languages – Part 1

Recently, we are witnessing to a large number of programming languages that gain popularity in the software industry.  Many of them are known as interpreter languages or also known as script languages. One of the reasons for these blossoms is now you can compile many of these languages to java byte code and run it on the JVM so the differences in the performance become very minor. So now java is not only a language it is .more like an echo-system. 
Today, there are more than 100 programming languages that run on the JVM! and the real questions is how do I know in which one to use and why, or I just need to stick with java
Well, the answer for that is depend on your requirement, each language has its own philosophy if your requirement and the way you like to write code is suitable to the language it means that you should use it. Java is a very object oriented language that encourage the programmer to write in object oriented paradigm. If you like to write object oriented (like I do) and you have a big project that include a lot of maintenance I think java is the language for you, for example java support strict typing and encourage you to write class for any type of object. Java supports interfaces and not multiple inheritance, encourage the developer to set properly the inheritance tree.  Most of the other languages do not try to compete java in that area, however, some of the languages has some features that better in java for that purpose.
Since i'm still not an expert with all these languages, i may find myself wrong about it and maybe i will find languages that has the same philosophy, I will be happy to discuss it.
However, sometimes you have other requirements and maybe for some applications object oriented programming can be cumbersome and awkward. for example, did you try to write swap function in java that swap the value of two numbers, you will find out there is no good way of doing it. Therefore, in the next few posts I will try to label the different programming languages and try to see when you need to work with what. So you use the most suitable programming language to your needs.

Saturday, June 8, 2013

How to choose good framework

The java eco system is full of exciting frameworks most of them are open source, many of them provide the same purpose as others. Many time during the development of your project you consider using one of these frameworks, personally I believe using external frameworks is a great idea. It is best advised to focus on your business logic instead of reinventing the wheel. But how do I know which framework to choose?
In this post I will define some criteria that I think are the most important criteria for choosing a framework, some criteria are controversial but I think there are very important arguments in the decision.

1. Good framework, is framework with big community - this is very important mainly in open source frameworks. Since open source frameworks grown by their community. Usually the community is other engineers that work in places like you are. And if many engineers think it's a good framework and invest time of using it (on the way debug it) and maybe even develop it. It is probably a good framework. If you want to know the size of the community looks for the number of Q&A in stack overflow or number of posts, training solution for this project.

2. Who behind this project, who developed it? Who is the company behind it, if it is top level project of apache you can sleep well at night. If it is one of the big companies like red hat or HP. it is also something safe. Stay away from academic frameworks that more suitable for theoretical issues.

3. Good Framework is well documented framework. Some developers thinks that open source framework should not be well documented since the owner of the project would like to earn money from training.
Well, I believe if we have big community the training will not be the problem.

4. The framework should mature enough - it was already debugged and has many successful case studies around the world. You have enough developers that work with it and usually in this case the code is already optimized for better performance.

5. The framework is easy to use - there is no complicated API, the framework focus in one major thing and not try to resolve everything. When you read the code of the example is very understandable and you can easily integrate it in your program,

So you can see, that in small reading and paying attention to this issues you can determine if you have good quality framework or something that it is not good idea to work with.
I hope it will also help you in choosing your framework