Julio C. Silva

Subscribe to Julio C. Silva: eMailAlertsEmail Alerts
Get Julio C. Silva: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


Related Topics: Apache Web Server Journal, Java Developer Magazine

Apache Web Server: Article

Technical Agnosticism: The New Techno-religion

Technical Agnosticism: The New Techno-religion

(April 8, 2003) - I am a technophile without a religion. That is, I do not practice or adhere to the $un Microsystems (Java) or the Micro$oft (C#.NET) religions. I think neither is a full solution to the real problem software professionals face. They are only half-solutions.

Sun Microsystems gave birth to Java, an operating system and hardware independent language/platform. Microsoft (after a long pregnancy), delivered C#, VB.Net and the .NET Framework, which "out-of-the-box" supports multiple programming languages on only one operating system and hardware architecture: Windows and x86.

According to my understanding, Sun owns Java. There is no open implementation of Java. If someone uses the word Java or alters the Java source code, then lawsuits will follow from Sun. In contrast, the C# language has been submitted to ECMA for standardization by Microsoft - to my complete surprise.

The fact that the .NET Framework is theoretically portable to other operating systems and hardware architectures has not been fully realized. The "Rotor" effort, is a poor attempt. First, it's "Shared Source", which means that you cannot do anything with it commercially without a special license from Microsoft. Even with a special license, why would we deploy a solution on top of Rotor if it's not a full representation of the freely available .NET Framework that runs on Windows? Sounds like a double standard!

The fact that Microsoft published the .NET Framework to ECMA is a half-attempt at open standardization. More specifically, according to .NET Developer's Journal (March 2003), " ...the whole of the .NET CLR is not covered by the ECMA CLI standards. Only 25% of the total .NET Framework libraries, for example, are covered." Therefore, when the classes for WinForms are WebForms implemented on Linux, will Microsft persue legal action? Given its history, I would be very surprise if they did not.

Sun Microsystems and Microsoft appear to be ignorant of the fact that software professionals are people. People like choices. People like to chooes things. For example, people like to choose whom they are going to vote for, what they are going to drive, what they are going to eat and wear. More specifically, people like to choose what programming languages they are going to code in and what processors are going to run operating systems of their choice. This is reality. Therefore, trying to convince people that they only need one programming language to solve all their problems (Java) and that they only need one operating system (Windows), makes NO business sense.

In addition to their ignorance, Sun Microsystems and Microsoft are also in denial. Sun, for example, falsely believes that Java is the only programming language that a software professional will ever need. If that is the case, then why are there so many .NET developers? Why is C/C++/C#, XML, SQL, Perl, Python, JavaScript, COBOL, PHP (and many more) still around? Microsoft, for example, falsely believes that businesses and consumers can do everything with Windows. If that is the case, then why are Linux high performance computing clusters gaining so much momentum in the Bioinformatics space? Why are so many professionals doing audio and video editing on Macs? Why does Hotmail run on Unix?

There is no question that Sun Microsystems and Microsoft have created technical and legal obstacles to segregate and discriminate against each other's technology offerings. These efforts have created many interoperability nightmares, which they are now trying to solve via Web services. Why? Money. Given the state of the economy, corporations and small business are refusing to buy anything new from either camp. They are investing their precious cash on making what they already have work together. So, if Sun and Microsoft want to make money, they have to be part of the interoperability solution.

I will buy stock in the fact that Web services is a way to interoperate between Java and .NET. BUT! I think this is yet again another half-solution to the real problem. The real problem is integration. That is, making Java and .NET work at the source code level.

Hypothetically speaking, if 50 % of software professionals are Java people and the other 50% are .NET people, then an organization that creates an open framework that combines Java's multiple operating system support and .NET's multiple language support will have 100 % of the software professionals. This sounds like business case for an open framework.

I have a dream that one day my .NET and Java code will work together side by side. I have a dream that one day we will have an open framework that supports multiple languages, multiple operating systems, and multiple hardware architectures. I think this dream will only be realized via Open Source because its goals are polar to the selfish interests of corporations like Sun Microsystems and Microsoft. Linus Torvalds had a dream!

Software professionals, hackers, crackers, hobbyists, pirates, et al, should NOT allow themselves to become obedient disciples of the Sun or Microsoft religions. At the end of the day, Sun and Microsoft only care about their bottom lines. Therefore, pledge NO allegiance to Sun or Microsoft. Be technically agnostic!

In my dream, I see various types of problems in vertical markets that can be solved by using a choice of IDEs, programming languages, classes, virtual machines, Web servers, application servers, operating systems, hardware architectures, and databases. Visually, this open framework would look something like this:

The Open Framework

Problem Space [x] [y] [z] [a] [b] [c]...
IDEs [Eclipse] [Vi] [Emacs] ...
Programming Languages [Java] [Perl] [Python] [VB.NET] [C#] [C] [C++] [PHP] [JavaScript]...
Classes [System] [IO] [GUI] [Security] [DB] [Web] [Console] [RegEx] [ASP] [Remoting] [WebServices] [Network] [Graphics] [XSP] [JSP]...
Virtual Execution Engines [Parrot] [Portable.NET] [Mono] [JVM] ...
Webservers [Apache]...
Application Servers [JBoss] [WebSphere] [BEA WebLogic]...
Operating Systems [Linux] [Unix] [Windows] [Mac] ...
Hardware [x86] [RISC] [SPARC]...

A note on the "GUI" set of classes. There are various "GUI packages"; for example, WinForm, WebForms, GTK, GTK#, AWT, Swing, SWT, etc. I think that the framework should support as many of these as possible. This will allow people to leverage their existing code bases and develop on top of them with the same or other technologies. This will also increase adoption from various camps. However, it's important to note that the .NET approach of multi-byte code and metadata is superior to Java's mono-byte code.

A note on virtual machines. Should there be one VM for all languages? Or should there be one VM per language or a set of languages? Clearly C/C++ are compiled languages, so a VM would not work. These details should hashed out by the VM experts.

Is the open framework that I am hypothesizing utopia or hallucinatory? Neither. The Open Source Community has already done a lot of work on portions of this open framework. For example, Parrot is a VM for Perl that can be extended for other languages. And there are two .NET VMs being implemented on Linux: Mono and Portable.NET. The Java VM already exists and Mono in fact has done some work with it on its CLI implementation; although, last I checked, it's on hold. The Open Source Community is effectively on the right course to solve the real problem facing software professionals. However, if these open source projects would collaborate and form an organization to take the helm, then we will not be limited to interoperability between Java and .NET via Web services.

I do not want to take the red or the blue pill. I just want to awake from the present nightmare of software development.

Links:

www.jboss.org

www.go-mono.com/

www.parrotcode.org/

www.southern-storm.com.au/portable_net.html

More Stories By Julio C. Silva

Julio C. Silva is a technically agnostic consultant with an academic and professional background in science and computer science, which he is combining to penetrate the Bioinformatics space. His in-progress website for the technically agnostic is at: www.sageofcode.com.

Comments (2) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
Julio C. Silva 05/15/03 12:32:00 PM EDT

I agree that C/C++ is very important.
But, I have not read that it is C/C++ code is compiled to IL. According to my understanding, it is compiled to native x86 instructions and works along side IL code. Do you have a link to your litterature reference?

Also, a lively discussion is occuring on this article at:
http://www.gotmono.com/cgi-bin/yabb/YaBB.pl?board=news;action=display;nu...

Thank you for taking the time to read this article. I have gotton alot of feedback thus far. Spread the word!

-Julio C. Silva
www.sageofcode.com

Miles Whitener 04/15/03 10:44:00 AM EDT

Good article. I say "be religious about religion". A programming language is really a pitiful religion (though less violent than some, I guess).
About C++, the article states: "Clearly C/C++ are compiled languages, so a VM would not work." This is incorrect. "Managed C++" is an important part of .NET and it compiles to IL (.NET bytecode).