Friday, October 14, 2011

Java vs. C#: The Great Java Debates

The Great Java Debates
Java has long been a leader in the arena of programming languages and computing platforms. But it shares the field with many competitors. Whenever there are choices about which tools to use for a given development job, there will always be sharp differences of opinion. What one developer states is flatly impossible to achieve in a particular language, another reveals to be easy – if you know the right tricks. Often, Java and its competitors can actually be used to do all the same things. It’s just a matter of deciding which option will get you where you want to go fastest. Here are some of the perceptions and alleged misconceptions about how the various options stack up to Java.
Java vs. C#
The problem with comparing two programming languages is that people who already use one language almost always tend to think it’s the easiest one to use. However, there are actually quite a few programmers who find these two languages comparable.  Some find Java simpler and more streamlined while giving C# props when you really need to write performance critical code. Others mention the fact that Java put safeguards in place to help prevent bad or “messy” programming choices while C# gives you more leeway to make whatever choices you deem fit. This makes C# seem like the ideal language for developers who fancy themselves “mavericks”.
Scratch the surface of any Java vs. C# debate and it quickly becomes clear that the language isn’t really the core issue – it’s the environment that matters. C# is part of the whole DotNet environment package. This “package” is designed to work seamlessly with lots of “out of the box” functionality when it comes to installation and systems integration. You know you’ll be working with just the Windows platform, everything’s standardized and highly uniform, and there’s plenty of support. This can make development faster for many projects. Of course, you have to be comfortable relying completely on Microsoft if you go that route.
Believers in Java cherish the ability to work on basically any platform (although this approach is not without significant challenges). When you need versatility rather than uniformity, there’s no substitute. This language has been around a long time (in programming years) and is considered mature. There’s certainly no shortage of support in the Java community if you run into a bit of a sticky wicket during development. So, from the standpoint of environment preference, many non-conformists flock to Java.
Java vs. Python
While Java and C# are considered to be very similar languages (kind of like Spanish and Italian), Java and Python are very different from one another. They tend to be better at different things. Programmers who are fluent in both languages sometimes recommend building individual components in Java and then using Python to compile or glue the components together into an application. One reason for this may be that finding the individual segments of pre-written code you need is easier in Java. Python documentation libraries (while substantial) are notoriously messy and poorly organized.
Some developers find development simpler and faster in Python because of its simpler syntax. However, Java proponents point to the fact that Python uses similar resources while delivering much slower performance when it comes to actually running a program. So far, hybrids like Jython seem to tick everybody off by incorporating the least desirable features from each language.
Java vs. Flash
This debate is all about the client’s experience of the end product and specific web design uses. Flash is very good at the basics that most users find important. For example, resizing graphics from one screen to another to make a seamless transition from a computer monitor to a handheld mobile device is a normal part of Flash’s vector graphic functionality. With Java’s bitmap approach, you may have to jump through hoops to avoid graphics issues.
What about compatibility? While Java excels on the server side when it comes to cross-compatibility, on the web side some users say Flash is actually the most versatile. It does work with most operating systems. Macromedia is very focused on being the user-friendly option when it comes to applets. They work with Unix, Mac, and Windows browsers without the issues you run into with Java.
Speed is also a big deal (have you ever noticed that it takes less than 3 seconds for an internet user to get impatient about a page loading?) Flash initialization is quite speedy, so effects are up and visible to keep the user’s interest. They are the favorite choice for streaming video. With Java, it can take much longer to load an applet – unless the programmer has taken extra measures to ensure speed. While Flash does require the user to have an up-to-date plug-in, this brand has become so ubiquitous that it’s safe to assume that most users already have it.
The area where Java delivers greater benefit is in high-end and complex graphics. You have more image processing power and can create virtually any effect desired. Animation is where Java really shines. That being said, developers who are familiar with both choices advocate using Flash and Java together to access the best features of each option.

No comments: