views:

268

answers:

5

Hi,

For the criterias below, what a technology stack would fit best?

  1. Cross-platform (Linux/Windows).
  2. Ability to run as a service (daemon).
  3. Powerful object-oriented data access (O/R-mapping).
  4. Multiple databases support (MsSql, Oracle, MySQl, SqlLite, Postgress).
  5. Web application can be tested (Unit and Integration testing).
  6. Reasonable or no development price (includes IDE and other tools).
  7. Reasonable or free licensing (price of OS, Databases etc).
  8. Very small dev team (1-5 people).
  9. Windows/.NET background of the team.

I would easily choose .NET as a platform with ASP.NET MVC/NHibernate. I am good at .NET and doing it for about 3 years or so. So that is easiest choice for me.

But there seem to be too many issues running ASP.NET on Mono. Mostly I found those on the net. But the ones I am aware of are:

  • different versions of Mono on different hosts
  • different behaviuor of some objects on different platforms (Ayende wrote in his blog some time ago about this)
  • conservative garbage collector
  • legal issues with MS.

I particularly like Ruby as a language, but not too sure if it requires a lot of tricks to satisfy points 2, 3, 4.

As for Java, for some reason I just can't do it. Every time I have to think to write get/set instead of a property, I fall back to C#. I would do Java if there would be no .NET 2/3.

So 2 main questions:

  • What language would fit best?
  • What related technologies would be useful?
+3  A: 

The good news is that Ruby has some excellent O/R mapping packages. Try ActiveRecord (which is a part of Rails). O/R mapping in Ruby is even easier than it is in Java -- there's you don't need code generation to satisfy a static type system, ActiveRecord uses method_missing to emulate the necessary function calls.

Ditto for database drivers -- they've are Ruby bindings for most major databases.

If you're interested in Ruby, then Ruby on Rails will cover most of your requirements (except for dealing with a team that's most familiar with Windows/.NET). You can also run Rails on JRuby (which is Ruby compiled to the JVM).

Ken Bloom
I will probably take the JRuby path. So in case of Ruby-emergency I can step back into native VM which is more native for me than Ruby is (because of .NET background).
Dmytrii Nagirniak
+1  A: 

Any of these options should work for you (tough call though):

Good luck. It will be interesting to see how the .NET developers feel about switching from .NET to something else.

Karmen Blake
+6  A: 

A standard suggestion would be:

  • Java (cross-platform)
  • JSF for the presentation layer. JSF is more or less similar to ASP.NET, (and Java and C# are also alike), so the .NET background wouldn't be such a problem.
  • Hibernate / JPA (powerful, multiple database support)
  • Selenium, JSFUnit, JUnit, TestNG for testing
  • Eclipse + plugins - mostly free
  • PostgreSQL - powerful and free
  • Some Linux distribution for OS
  • spring framework - you don't have any specific requirement for this, but it makes your life easier.
Bozho
alongwith that, add springframework for `lightweight and open source framework`.
Rakesh Juyal
There is another better IDE exists. And its also free with a lot of coool plugins. And choosing and installing a plugin is hassle free. And you know it. And you didn't name it. :)
Adeel Ansari
Working with NetBeans was a bad experience for me (in version 6.1 at least), so I'd abstain from recommending it. ;)
Bozho
Ah.. fair enough. With me, I was quite addicted to IntelliJ, then no license from the new company made me switch to something else. I went to Eclipse, since I was working with that before. But this time it was a pain in the ar*e. Then I tried Netbeans, I was not that happy with Netbeans either, but at least it made me stick for sometime. Then tremendous improvements furhter, made me love it. BTW, miss IntelliJ once a while. :)
Adeel Ansari
+1  A: 

i will suggest going for java

  • Java
  • SpringFramework
  • Freemarker/Velocity
  • Hibernate
  • Eclipse + plugins - mostly free [ copied from Bozho ;) ]
  • MySQL - powerful and free
Rakesh Juyal
+1  A: 

I would say:

Language

Python or PHP or Java, they all work very well under both linux and windows. Both communities are frequently offering support for both operating systems unlike the Ruby community

Framework

Django (python) or Zend Framework (php)

Database

Any, all languages mentioned have drivers for the most popular databases like Mysql, Postgresql, MSsql, Oracle.

Os

Pick anything you are most comfortable with managing. Consider the time learning how to operate vs the license cost. As the technologies suggested are cross platform, it doesn't matter.

Tomh
I do not think you can run PHP as a service/daemon.
Dmytrii Nagirniak
Running something as service/daemon has nothing to do with the language..
Tomh