Writing it in Java does have some advantages. One is that you can use the same code on a few popular platforms. Think about what that means to maintainability.
Please stop advocating this as an advantage, its exactly the opposite.
This is a advantage for the developer. For the users this is a clear disadvantage: It will never integrate as well into their platform as a native solution would. You might as well put on your projects web page that you care jack about your users.
Code is portable, User interfaces aren't. Take a hint from skype, implement your application in whatever language you please as a library and then make GUI's with the platforms native or best widget set. In their case that was C for the core and C++ QT, Delphi VLC and Obj-C Cocoa for linux, windows and mac respectively.
There are a lot of rails pages which get massive traffic. 43things.com / 43places.com and blogger founders new business odeo.com are build with ror. It scales very very easily ( same general principle as php / perl apps scale plus tools to make it even easier )
There is no downside to using ruby on rails. Closest thing to a silver bullet since the web came out.
Anyone experienced in ruby on rails will match any team of 5 struts programmers in productivity.
You are absolutely and utterly kidding yourself. All idea does is fix java. An IDE like this is just not required for ruby like service pack 2 is not required for linux.
I think its worth mentioning that YubNub was created for the RailsDay. A one day Ruby on Rails coding contest which was featured in the developer section of slashdot a week or so ago. Its not the pinnacle of complexity but its still amazing what you can do in just a day. Hats off the the programmer.
Do what skype did. Implement the essence of your application in whatever you see fit. They used c because they needed performance. Then they go round and use the best GUI toolkit on every platform. Objective-C + Cocoa on the mac. Delphi / VCL on windows, QT on linux (ok arguable choice). The clients are very pretty and excellently integrated on all the platforms, for example the mac version uses a drawer like interface for current calls and uses a little translucent notification window on incoming calls with buttons for answer and hangup.
That being said, wxWidgets works on most platforms and you can program it well from many languages like ruby, python, all the c's, c# and so on.
Thats exactly what memcached fixes. memcached is a cluster of memory segments. You just fill up all your server with cheap memory and add them to the memcached pool which leaves you with gigs and gigs of ultra quickly accessible data.
The best solution for this is memcached. It means that all sessions will be in memory and therefore blazingly fast accessible to anyone in the server farm.
The database is a excellent second choice as well.
I usually go with db based sessions first for convenience and move to memcached as soon as it is required. As always, dont try to make your app scale before you need it. I know its fun but just wait, you will have a much better idea where the bottle neck is when you hit one.
I know this is a trick 99% of all projects never need to run across more then one box, never mind what management says.
Sorry you misquote me. I said share nothing environments scale because you can just put up 100 web servers to take part in serving the application.
Im well aware that J2EE apps or apps which are based on multi threading dont scale easily. You cannot easily distribute them over many servers because they rely on internal state. And if they don't the overhead of the internal communication channel will take up 100% of the resources at a certain point in scaling.
Saying that only trivial apps scale well gives away that you obviously never pursued the share nothing approach to scaling.
Its the technology employed by google, amazong, ebay, blogger, live journal and so on.
Here is what you do when your typical lighttpd/apache rails application hits its one cheapo server limit ( at around 60 pages/sec currently, so the volume of about 1% of all web applications):
You get one extra server, configure lighttpd or mod_fcgi to use external fcgi servers and point it to the new machine.
This means that if more processes are needed to handle the incoming requests more rails instances are spawned on the machine which has the lowest current load. You can add and remove any amount of computers at any given time. What do you do when the web server is overloaded ( at around 1.7k requests/s ) ? You add another using round robin dns. What do you do when your database cant cope anymore? Add caching using memcached, get lots of ram for all the boxes available and add it to the memcached cluster, do like livejournal which has a 30gb cache going on. What do you do if your DB still is too slow? Segment it. Clients A-M on one DB, Clients N-Z on another, thats what ebay does.
Scaling stuff is incredibly easy if you dont buy into flawed technologies. Whats even more important is that it can easily be retrofitted and doesnt need to clutter up your development process with unnecessary complicated crap.
Nice FUD... Except that its made up.
Rails is very secure by default (uses pepared statements and things like this).
It does whatever it can do to make the framework part of the application secure and even offers a book on security on the hieraki bookshelf for the user side of things: Securing your Rails application.
This is a great example of rails quality documentation. have a look at the bookshelf itself: Hieraki bookshelf
And the application which powers it is open source (MIT) at www.hieraki.org
Speed is a stupid mesure for web apps. There is nothing easier to scale then webapps in the world. You can cope with any amount of traffic by just throwing more hardware on the problem in a share nothing environment like php, perl or ruby/rails.
Whats interesting is the development speed and thats what the comparison between the java and the rails version highlighted well. For a great analysis look here: weblog
What makes the above link so special are the comments from the java community saying that the two examples are not functionally equivalent. This is really golden because they are really not. The rails version ( which is 3 lines of code ) does everything the java code does plus tons and tons of more things just by taking educated guesses after looking at the SQL schema.
Rails is a remarkable framework and a glimps of what programming will be like in the future. Yarv will just save some hardware costs
-- First they ignore you, then they laugh at you, then they fight you, then you win. -- Gandhi
Hieraki is a project which aims to create a wiki with pages hierarchically arranged instead of interlinked like on a traditional wiki. It uses the notion of Books, Chapters and Pages.
Its the main means of documentation for the rubyonrails project and is used for writing documentation at several hosting services like textdrive and universities.
Please stop advocating this as an advantage, its exactly the opposite.
This is a advantage for the developer. For the users this is a clear disadvantage: It will never integrate as well into their platform as a native solution would. You might as well put on your projects web page that you care jack about your users.
Code is portable, User interfaces aren't. Take a hint from skype, implement your application in whatever language you please as a library and then make GUI's with the platforms native or best widget set. In their case that was C for the core and C++ QT, Delphi VLC and Obj-C Cocoa for linux, windows and mac respectively.
OSX, 100% localhost self sufficient development environment and of course Textmate
The programmer of Ruby on Rails also got the 2005 "Best Hacker" award by O'Railly and Google.
This years OSCON was all about ruby.. amazing stuff.
There are a lot of rails pages which get massive traffic. 43things.com / 43places.com and blogger founders new business odeo.com are build with ror. It scales very very easily ( same general principle as php / perl apps scale plus tools to make it even easier )
There is no downside to using ruby on rails. Closest thing to a silver bullet since the web came out.
And god forbit, your users might not be so drastically punished for your terrible error of judgement to use java to write a desktop application!
Its a win win!
(for completeness: swing is supposed to become better with the next java release)
Anyone experienced in ruby on rails will match any team of 5 struts programmers in productivity.
You are absolutely and utterly kidding yourself. All idea does is fix java. An IDE like this is just not required for ruby like service pack 2 is not required for linux.
I think its worth mentioning that YubNub was created for the RailsDay. A one day Ruby on Rails coding contest which was featured in the developer section of slashdot a week or so ago.
Its not the pinnacle of complexity but its still amazing what you can do in just a day. Hats off the the programmer.
I agree 100% and invite you to the real world where things are not perfect.
Step five, having mozilla click every single delete and drop database link in phpmyadmin for you
Step six, cry
Geeze, yea, why should they?
Perhaps because they sell millions of copies? No that can't be it.
Yea, You are also the guy who wants to replace the elevators with stairs in the empire state building right?
finally we can create a worm which installs linux.
Well he had a good _reason_.
Do what skype did. Implement the essence of your application in whatever you see fit. They used c because they needed performance. Then they go round and use the best GUI toolkit on every platform. Objective-C + Cocoa on the mac. Delphi / VCL on windows, QT on linux (ok arguable choice). The clients are very pretty and excellently integrated on all the platforms, for example the mac version uses a drawer like interface for current calls and uses a little translucent notification window on incoming calls with buttons for answer and hangup.
That being said, wxWidgets works on most platforms and you can program it well from many languages like ruby, python, all the c's, c# and so on.
Thats exactly what memcached fixes. memcached is a cluster of memory segments. You just fill up all your server with cheap memory and add them to the memcached pool which leaves you with gigs and gigs of ultra quickly accessible data.
memcached
This is what powers slashdot as well
The best solution for this is memcached. It means that all sessions will be in memory and therefore blazingly fast accessible to anyone in the server farm.
The database is a excellent second choice as well. I usually go with db based sessions first for convenience and move to memcached as soon as it is required. As always, dont try to make your app scale before you need it. I know its fun but just wait, you will have a much better idea where the bottle neck is when you hit one.
I know this is a trick 99% of all projects never need to run across more then one box, never mind what management says.
Sorry you misquote me. I said share nothing environments scale because you can just put up 100 web servers to take part in serving the application.
Im well aware that J2EE apps or apps which are based on multi threading dont scale easily. You cannot easily distribute them over many servers because they rely on internal state. And if they don't the overhead of the internal communication channel will take up 100% of the resources at a certain point in scaling.
Saying that only trivial apps scale well gives away that you obviously never pursued the share nothing approach to scaling. Its the technology employed by google, amazong, ebay, blogger, live journal and so on.
Here is what you do when your typical lighttpd/apache rails application hits its one cheapo server limit ( at around 60 pages/sec currently, so the volume of about 1% of all web applications):
You get one extra server, configure lighttpd or mod_fcgi to use external fcgi servers and point it to the new machine.
This means that if more processes are needed to handle the incoming requests more rails instances are spawned on the machine which has the lowest current load. You can add and remove any amount of computers at any given time. What do you do when the web server is overloaded ( at around 1.7k requests/s ) ? You add another using round robin dns. What do you do when your database cant cope anymore? Add caching using memcached, get lots of ram for all the boxes available and add it to the memcached cluster, do like livejournal which has a 30gb cache going on. What do you do if your DB still is too slow? Segment it. Clients A-M on one DB, Clients N-Z on another, thats what ebay does.
Scaling stuff is incredibly easy if you dont buy into flawed technologies. Whats even more important is that it can easily be retrofitted and doesnt need to clutter up your development process with unnecessary complicated crap.
The other way around. The rails version was the original tadalist
Nice FUD... Except that its made up. Rails is very secure by default (uses pepared statements and things like this).
It does whatever it can do to make the framework part of the application secure and even offers a book on security on the hieraki bookshelf for the user side of things: Securing your Rails application .
This is a great example of rails quality documentation. have a look at the bookshelf itself: Hieraki bookshelf
And the application which powers it is open source (MIT) at www.hieraki.org
Speed is a stupid mesure for web apps. There is nothing easier to scale then webapps in the world. You can cope with any amount of traffic by just throwing more hardware on the problem in a share nothing environment like php, perl or ruby/rails.
Whats interesting is the development speed and thats what the comparison between the java and the rails version highlighted well. For a great analysis look here: weblog
What makes the above link so special are the comments from the java community saying that the two examples are not functionally equivalent. This is really golden because they are really not. The rails version ( which is 3 lines of code ) does everything the java code does plus tons and tons of more things just by taking educated guesses after looking at the SQL schema.
Rails is a remarkable framework and a glimps of what programming will be like in the future. Yarv will just save some hardware costs
--
First they ignore you, then they laugh at you, then they fight you, then you win. -- Gandhi
Groovy is a bad port or ruby without the amazing syntax beauty ( one of rubys main virtues )
I run a snowboard store at www.snowdevil.ca and this months statistics are really surprising.
Obviously this is a pretty young clientele
Browsers:
Operating systems:
Go non MS stuff!
Hrm, I thought it would be fair to make sure to set things straight.
I'm not trying to get any extra traffic to my open source project. I just thought it would be a relevant and on topic comment.
Hieraki is a project which aims to create a wiki with pages hierarchically arranged instead of interlinked like on a traditional wiki. It uses the notion of Books, Chapters and Pages.
Its the main means of documentation for the rubyonrails project and is used for writing documentation at several hosting services like textdrive and universities.
Disclaimer: I'm the author.
Awesome, That means we will see them soon!