RoR or Java for community portal?


#1

Hello Ruby users,

let me introduce myself briefly - I am a student at OvG University
Magdeburg, Germany, and I hope to get some advice for a nonprofit
student community portal I am involved with, just in case somebody is
interested: http://www.webuni.de, having around 3000 active users.
Development is done on a voluntary basis by members of the community,
mainly IT students with too much spare time.

At present, the code base is in Php - it’s huge, and nearly
unmaintainable. There are 120 reported unfixed bugs, and as it’s really
bad coding style - mixing presentation, SQL and PHP code - fixing bugs
has become close to impossible.

We decided to move away from Php.

Java is popular at our university, and everybody is familiar with it. At
first I proposed to use a java solution based on Hibernate, Tapestry and
Spring/Acegi security. I have experience using these frameworks, but I’m
not too convinced other junior developers will be able or willing to
learn them, too. Also a java solution might be overkill, since it will
always stay a regional community, mainly focused on the city and student
life of Magdeburg, so performance is not the main issue.

Now that’s where Ruby on Rails comes in - as I read about rails, I
thought this might be a way for us to go. I have read “Agile web
development with Rails” and “Programming Ruby 2nd Edition”, but have no
further practical Ruby experience.

Are there any experiences with using Ruby on Rails for a community
portal? Maybe some experienced users could give some hints on where the
advantages of Ruby and Rails are for this case.

One thing I imagined was, that developing application pieces - we call
them “modules” - will be easier to implement since Ruby gives something
like built-in static crosscutting through mix-ins.

Are there any experiences with unexperienced Java developers using Ruby?

Or is it just a matter of taste, and I’m better off with sticking to the
Java solution?

Best regards
Gregor M.


#2

Go with Rails. I’m a Java developer working on my first Rails project
and I’m finding it easy to learn and breathtaking in its productivity.
For examples of community sites using Rails, see the flagship sites
developed by the Rails inventors, Basecamp
(http://www.basecamphq.com/), Backpack (http://www.backpackit.com/),
and others developed by 37 Signals.

Quite frankly, as much as I love Java, for most web applications,
Rails and Rails-like environments are the future.

dean

On 1/2/06, Gregor M. removed_email_address@domain.invalid wrote:

unmaintainable. There are 120 reported unfixed bugs, and as it’s really
always stay a regional community, mainly focused on the city and student

Gregor M.


Posted via http://www.ruby-forum.com/.


Rails mailing list
removed_email_address@domain.invalid
http://lists.rubyonrails.org/mailman/listinfo/rails


Dean W.
http://www.aspectprogramming.com
http://www.newaspects.com
http://www.contract4j.org


#3

On Jan 2, 2006, at 5:21 PM, Gregor M. wrote:

advantages of Ruby and Rails are for this case.
I’ve been involved with community portal like software for years. All
but one effort in Java. A year or two ago I used Common Lisp on a
project. That was the end of Java for new projects of this type for
me. No More! I’ve been using Ruby on and off for various things for a
few years and with all the noise about Rails (and, to be honest, the
appearance of a book) I decided to check it out (by reading the
book). Pretty convincing, but… Just before Christmas I decided to
give Rails a serious shot. More than pretty convincing. And no book
could possibly convey this, you have to try it. RoR has a very very
good way of dealing with the View/Controller part of MVC – there
can’t be anything like it in Java, and there could be but isn’t in
Common Lisp. The way this works is wonderful. If you are a Java
programmer and haven’t tried RoR you just don’t know what I
mean. If you are a smalltalk or lisp programmer, you are going to
experience something like what you are familiar with but it’ll be so
unexpected you’ll be shocked.

The performance of RoR is not an issue for my stuff. I doubt it will
be for yours either (3000 users is well within range of Rails unless
they are doing something unusual (but this is a university
environment so maybe they are :-))

One thing I imagined was, that developing application pieces - we call
them “modules” - will be easier to implement since Ruby gives
something
like built-in static crosscutting through mix-ins.

Wow. You are a Java head :slight_smile: Mixins, compile-time execution of
code, and reopening of classes, especially in combination, provide
for a very nice programming experience.

This is where I’d be concerned with Rails. I don’t know how RoR will
work with independent development groups working on quasi-independent
chunks of code. I don’t use ActiveRecord, and I’m suspicious of the
concept of ‘model’ supported by this kind of thing, but I have to
admit that ActiveRecord looks to be well done. I don’t see the
packaging of these development efforts formally set out in RoR. This
is not to say they are not there, but this doesn’t appear to have
been a major focus so far. Now, lets be serious here – I think there
are several ways to achieve this, there is nothing in RoR that
prevents it. But you are going to have to be careful. Watch out for
model conflicts (the controllers and views can, and should, be
modularised but I can’t see how to do this in the model – models are
named by a symbol, and symbols in Ruby are not modularised – this
worries me (somebody, please tell me I’m wrong)). (Well, the fact is,
I’ve replace the model that comes with RoR with my own based on xampl
(see my sig) and that is completely modularised and so I’m pretty
sure that some RoR solution should be possible). The RoR ‘engine’
approach looks interesting too.

Are there any experiences with unexperienced Java developers using
Ruby?

Did you mean experienced Java developers using RoR/Ruby? If so, then
I’ll say it is a good experience. I think Ruby is easier to learn
than Java, but maybe the tools are a bit raw for beginners, I don’t
know. RoR is much more comprehensible in a much shorter time than any
Java framework I’ve used.

Or is it just a matter of taste, and I’m better off with sticking
to the
Java solution?

No, it is not a matter of taste. Unfortunately, that isn’t enough to
say you aren’t better sticking to Java :slight_smile:

Cheers,
Bob

Best regards
Gregor M.


Posted via http://www.ruby-forum.com/.


Rails mailing list
removed_email_address@domain.invalid
http://lists.rubyonrails.org/mailman/listinfo/rails


Bob H. – blogs at <http://www.recursive.ca/
hutch/>
Recursive Design Inc. – http://www.recursive.ca/
Raconteur – http://www.raconteur.info/
xampl for Ruby – http://rubyforge.org/projects/xampl/


#4

Hello Bob,

thanks for you taking the time to answer!

I’ve been involved with community portal like software for years. All
but one effort in Java. A year or two ago I used Common Lisp on a
project. That was the end of Java for new projects of this type for
me. No More! I’ve been using Ruby on and off for various things for a
few years and with all the noise about Rails (and, to be honest, the
appearance of a book) I decided to check it out (by reading the
book). Pretty convincing, but… Just before Christmas I decided to
give Rails a serious shot. More than pretty convincing. And no book
could possibly convey this, you have to try it. RoR has a very very
good way of dealing with the View/Controller part of MVC – there
can’t be anything like it in Java, and there could be but isn’t in
Common Lisp. The way this works is wonderful. If you are a Java
programmer and haven’t tried RoR you just don’t know what I
mean. If you are a smalltalk or lisp programmer, you are going to
experience something like what you are familiar with but it’ll be so
unexpected you’ll be shocked.

Sounds like we should give it a chance by starting a prototype in Ruby.

The performance of RoR is not an issue for my stuff. I doubt it will
be for yours either (3000 users is well within range of Rails unless
they are doing something unusual (but this is a university
environment so maybe they are :-))

It was really hard for me to find hard facts on RoR performance. One
website mentioned the performance is eight times less than Java - that
is without any DB access involved. This kind of scared me, but as our
Php application has no performance issues, there shouldn’t be any in
ruby, as I heared it is comparable in speed. Can you confirm that?

Watch out for
model conflicts (the controllers and views can, and should, be
modularised but I can’t see how to do this in the model – models are
named by a symbol, and symbols in Ruby are not modularised – this
worries me (somebody, please tell me I’m wrong)). (Well, the fact is,
I’ve replace the model that comes with RoR with my own based on xampl
(see my sig) and that is completely modularised and so I’m pretty
sure that some RoR solution should be possible). The RoR ‘engine’
approach looks interesting too.

What engine approach? So in short ActiveRecord models cannot be enhanced
by modules, right? Thats no good news, as this was a primary feature I
was looking for. I looked into the xampl project, but then I would have
to convince the team that we should replace the model part of a MVC
framework I’m proposing to use, guess they’ll wonder if it can then be
so good after all. I’ll look deeper into this, anyway.

Did you mean experienced Java developers using RoR/Ruby? If so, then
I’ll say it is a good experience. I think Ruby is easier to learn
than Java, but maybe the tools are a bit raw for beginners, I don’t
know. RoR is much more comprehensible in a much shorter time than any
Java framework I’ve used.

Hmm, I think we’ll just have to test this on the prototype. I meant
unexperienced developers, since most developers are “just” IT students,
so there are also people with no deep insight in advanced java
programming, though we have some “freaks” also :slight_smile:


#5

‘Engine’ approach: http://rails-engines.org

  • james

#6

On Jan 3, 2006, at 3:15 PM, Gregor M. wrote:

Hello Bob,

thanks for you taking the time to answer!

No problem. I hope I’m not confusing thing…

good way of dealing with the View/Controller part of MVC – there
can’t be anything like it in Java, and there could be but isn’t in
Common Lisp. The way this works is wonderful. If you are a Java
programmer and haven’t tried RoR you just don’t know what I
mean. If you are a smalltalk or lisp programmer, you are going to
experience something like what you are familiar with but it’ll be so
unexpected you’ll be shocked.

Sounds like we should give it a chance by starting a prototype in
Ruby.

For sure, but this isn’t the only reason to use Ruby. W.r.t.
prototyping, I was talking to a colleague this afternoon about how I
can will be using Rails and Ruby to workout some design issues then
re-implement in Java. This’ll still save me a ton of time.

The performance of RoR is not an issue for my stuff. I doubt it will
be for yours either (3000 users is well within range of Rails unless
they are doing something unusual (but this is a university
environment so maybe they are :-))

It was really hard for me to find hard facts on RoR performance. One
website mentioned the performance is eight times less than Java - that
is without any DB access involved. This kind of scared me, but as our
Php application has no performance issues, there shouldn’t be any in
ruby, as I heared it is comparable in speed. Can you confirm that?

Ruby is slower than Java, 8x sounds possible. However, we are
talking about web apps and the internet will be the bottle neck even
with Ruby. And then when you add in DB access, well, I don’t know if
there’s a lot of practical difference. I do not think a typical
community portal is going to see anything like an 8x difference –
I’m not seeing any difference on the stuff I’m playing with (in fact,
on my powerbook G4 with 2GB of RAM I think Ruby serves dynamic
content a bit faster, it sure as hell runs faster in development mode
(about 2s in RoR to start up, about 40 seconds in Java to start – on
my desktop dual CPU G5 thing RoR starts up in a fraction of a second
– this is very nice).

What engine approach?

http://rails-engines.org

So in short ActiveRecord models cannot be enhanced
by modules, right? Thats no good news, as this was a primary feature I
was looking for. I looked into the xampl project, but then I would
have
to convince the team that we should replace the model part of a MVC
framework I’m proposing to use, guess they’ll wonder if it can then be
so good after all. I’ll look deeper into this, anyway.

It isn’t that bad, sorry to leave that impression. Inside the model
there are no restrictions or problems. Modules are also used to
control name conflicts. In Ruby, symbols are global they are not in
a module. So if you have two models, both called :model then you’ve
got a problem. Now, I think this can be dealt with but I don’t see
any explicit discussion in ActiveRecord documentation (I don’t mean
anything more than that). And considering how easy it was for me to
deal with this on my own, I can’t imagine that there isn’t some way
to deal with this already in RoR that I just don’t know about. Now, I
happened to see something about model prefixes this afternoon, I have
not pursued this, but if it is what it sounds like, then this will do
the trick well enough.

This may all be a simple documentation problem… documentation
missing, or me just being a poor reader of the documentation :slight_smile:

so there are also people with no deep insight in advanced java
programming, though we have some “freaks” also :slight_smile:

Sounds like fun!

Cheers,
Bob


Posted via http://www.ruby-forum.com/.


Rails mailing list
removed_email_address@domain.invalid
http://lists.rubyonrails.org/mailman/listinfo/rails


Bob H. – blogs at <http://www.recursive.ca/
hutch/>
Recursive Design Inc. – http://www.recursive.ca/
Raconteur – http://www.raconteur.info/
xampl for Ruby – http://rubyforge.org/projects/xampl/


#7

Ruby is slower than Java, 8x sounds possible. However, we are
talking about web apps and the internet will be the bottle neck even
with Ruby. And then when you add in DB access, well, I don’t know if
there’s a lot of practical difference.

Well, I left DB Access out since Hibernate will beat ActiveRecord hands
down anyway I suppose - no second level cache, no query cache and so
on… Well, at least ActiveRecord won’t be slower than handcoded PHP
database access and is much easier to use.

I do not think a typical
community portal is going to see anything like an 8x difference –

I agree, as we don’t have problems with PHP, too. Fast enough ist fast
enough. Period.

http://rails-engines.org - looks interesting, I think we will make use
of this, thanks.

Well, looking at the source code… The
ActionController::dependencies#model method calls
ActionController::dependencies#require_dependencies which in turn
calls Object.require_dependency. Object.require_dependency is defined
in Object in the ActiveSupport file dependencies.rb (by re-opening
the Object class) and calls ActiveSupport::Dependencies#depend_on
which ultimately ends up calling either load or require on a file name.

So, to cut it short, instead of writing:

model :my_model

everywhere, you can write:

model ‘my_application/my_model’

And all is well.

I no longer have any concern about the model side of things.

Thank you very much for looking into the code and clarifying this. That
was really helpful to me!

Anyway, today I held my first presentation about the problems in our
present application, proposed useful patterns for solving them and then
presented a Java solution based on Hibernate, Spring, Tapestry, Acegi
Security. This stack is suited to good Java web development, but it has
one big problem: Really steep learning curve, much time needed to learn
it. Then I told them that I will present Ruby on Rails on Monday,
offering all “really” needed functionality from the Java frameworks plus
higher productivity and other useful features - of course everybody was
interested - and so am I :slight_smile:

Thanks again for helping out!

Cheers
Gregor


#8

On Jan 3, 2006, at 9:12 PM, Bob H. wrote:

It isn’t that bad, sorry to leave that impression. Inside the
sounds like, then this will do the trick well enough.

This may all be a simple documentation problem… documentation
missing, or me just being a poor reader of the documentation :slight_smile:

Well, looking at the source code… The
ActionController::dependencies#model method calls
ActionController::dependencies#require_dependencies which in turn
calls Object.require_dependency. Object.require_dependency is defined
in Object in the ActiveSupport file dependencies.rb (by re-opening
the Object class) and calls ActiveSupport::Dependencies#depend_on
which ultimately ends up calling either load or require on a file name.

So, to cut it short, instead of writing:

model :my_model

everywhere, you can write:

model 'my_application/my_model'

And all is well.

I no longer have any concern about the model side of things.

Cheers,
Bob


Bob H. – blogs at <http://www.recursive.ca/
hutch/>
Recursive Design Inc. – http://www.recursive.ca/
Raconteur – http://www.raconteur.info/
xampl for Ruby – http://rubyforge.org/projects/xampl/


#9

On Jan 4, 2006, at 7:57 PM, Gregor M. wrote:

plus
higher productivity and other useful features - of course everybody
was
interested - and so am I :slight_smile:

Let us know how it goes.

Cheers,
Bob


Bob H. – blogs at <http://www.recursive.ca/
hutch/>
Recursive Design Inc. – http://www.recursive.ca/
Raconteur – http://www.raconteur.info/
xampl for Ruby – http://rubyforge.org/projects/xampl/