views:

115

answers:

6

Hello Everyone

I am currently working in a .Net project but from university I have also a good background in Java. Recently I am asking myself, if multi plattform languages (like Java, or VM based like Scala) arent on the rise?

Lets have a look at Suns WORA write once, run anywhere principle, which had been rephrased to write once, TEST everywhere because in the past especially desktop applications were/are still a Windows domain. But the last years there were quite some changes like

  • Linux has improved hugely in driver support and usabilty
  • Mac OS is getting even more popular
  • native look & feel thanks to SWT/JFace for Java
  • Rich Client Frameworks (RCP and Netbeans) that save a lot of time and provide rich experience

So, creating applications targeted on multi plattforms should be a reasonable way to go. For example, why should a small/mid-sized company pay a lot of money for windows/mac when it can use Linux (honestly, when you are not a gamer you dont need windows ;) ). And of couse then those companies would prefer software that runs on their machines (maybe the CEO a has MAC because he can afford it but needs the same apps.) Eclipse RCP can provide for example and then it really is WORA.

I like working on C# right now, but in 1-2 years when I want to have my own little company I will use Linux and the development will probably focus on what I've just written. I just wanted to know what others are thinking (maybe I change my mind).

Please dont start a war on Linux vs. Windows vs Mac (I use the first two). Its only about if multi-plattform is a good way for the future, or if you gain more by the advantages of a single plattform (special features).

A: 

Check out mono http://www.mono-project.com/Main_Page if you like C#

Use SWT (http://www.eclipse.org/swt/) if you prefer java

YMMV

Nir Levy
Mono is quite behind the actual .NET 3.5 (the latest release is having .Net 2.0 features)
lostiniceland
i still think it can be considered "on the rise"
Nir Levy
true :). It would be nice if MS would put some effort into this by themselfs. But of course there main revenue is generated by selling operating systems
lostiniceland
A: 

If you are going to spend hundreds of thousands (or millions) of dollars developing an application, it makes sense for it to be capable of running on as many machines as possible. Just a few years ago, platforms had many platform-sepcific features, but that distinction is rapidly disappearing with the availability of cross-platform compilers like Mono.

Robert Harvey
A: 

All depends of the activity domain of the software that you develop... If end users are or plan to use multi-pateform so you must care about it ! If not, you can develop on the plateform used by your customers !

Of course, some peope would say : even if all customers are on Windows, the development is more productive on MacOS... but it's an other question !

Matthieu
+4  A: 

I work for a Qt consultancy company that's been writing multiplatform applications for a few years and I work on KDE's port to OSX and previously at a company providing a client for Windows/Linux/Mac.

The obvious benefits you get from supporting multiple platforms are:

  • Goodwill from niche communities (including blogging, word of mouth support)
  • Your developers can work on whatever platform they like so you can recruit them more easily
  • Your application will probably be slightly less buggy as you'll be testing on multiple platforms

The downsides:

  • Packaging/distribution/support becomes a big of a pain
  • Some platforms can get easily neglected
  • You don't tend to hook into the backend features of the OS as well
  • If writing a GUI application then you tend to end up with something that doesn't really meet the HIG of any platform unless you have quite a lot of platform-specific tweaking or have a toolkit that helps with this (e.g. Qt)

I still think it's worthwhile and agree with you that it's the future of applications. Really, there is enough good, high-level technologies that there's no need to limit your market to a single platform's users and Linux is a huge in emerging markets so being able to run your application there will be more and more important as time goes on.

Cross-platform solutions I've seen used to good effect:

  • Adobe Air
  • C# (with .NET or Mono)
  • Qt
  • Java
  • Web applications (obviously)
Mike McQuaid
thanks, especially for the dowsides.
lostiniceland
No problem. I use all three platforms regularly for both work and play so it's something I've learnt a bit about. Give me a shout by email if you want to talk more about this (you can find the details on my website, linked from the profile).
Mike McQuaid
+1  A: 

Yes, this is happening, but it's a very slow process.

You can trace the trend back to the UCSD Pascal P-system from the early 80's. In the 90's we got the JVM, and in the naughties we got the CLR. These newer VMs each support many languages from third parties. Python, for example, has long had its own VM, but also comes in a version that runs on the JVM, called Jython, and another one that runs on .NET's CLR, called Iron Python.

Other VMs exist that are targeted by multiple languages. The Parrot VM was created initially for Python and Perl 6. The Reia language runs on Erlang's BEAM VM. I'm sure there are other examples.

On top of that, there are many languages that have been cross-platform for a decade or two, like Smalltalk, early versions of Perl, Ruby, etc.

This is all a kind of long-term tectonic shift. It's driven by the fact that computers are getting faster, while many tasks we use computers for don't need to get faster. So, we can use high-level languages to write programs to do these tasks, where it wouldn't have made sense in the past. In the early 80s, the successful new word processors were written in assembly language. In the 90s's, C. Today, Javascript.

Warren Young
A: 

In general, your users will generally prefer an app that looks and behaves like a native application. Many of the cross-platform frameworks are really very good at emulating the native look and feel. Just be aware that if your app doesn't feel native (maybe through some quirk in your toolkit of choice), critics will beat you over the head about it forever.

Also, The issue of using cross-platform toolkits really depends on the application domain you're targeting. For example, if you're working with video, creating a cross-platform app with a good user experience is very, very challenging. On the other hand, CRUD (Create-Update-Delete) apps commonly used inside of enterprises are excellent candidates for developing with cross-platform languages/toolkits.

Also, one reason that Java is very popular for applications deployed inside of enterprises is the ease with which you can deploy updates (via Java Web Start - I think C# has a similar update technology too). However, once you step outside of the walls of the business most users will shy away from Java Web Start apps.

hohonuuli