2008/8/1 Arie Kusuma Atmaja <[EMAIL PROTECTED]>

> ngomong-ngomong soal deployment nih, jujur gua ngiri liat demo bean j2ee
> (awas kalo gw salah maklumin weh atuh gw bukan orang java lumayan euy
> kalo diracunin jruby dari kulon kono) pas deploy ke tomcat apache ama
> catalina gitu ya, tinggal main copy paste ke root direktori plung...
> abis gitu browser direfresh eh udah detek / kayak main autotest di ruby,
> langsung otomatis detek/keliatan juga di lognya.
> gitu juga pas nghapus, tinggal delete aja direktori projectnya..
> tuing... langsung kehapus :))
>
> ....


Memang seperti itu :) Pertama kali aq belajar itu, kayanya "aneh"... apa
bedanya dengan kita naruh script PHP di Apache pada zaman baheula, misalnya
...

Ternyata memang beda!!

Apache nggak ngerti kalo file tersebut ditambah, dikurangi, ato foldernya
hilang, misalnya... Kebetulan aja script tersebut pas di-request oleh
client, pas ada, lalu dijalanin, selesai udah deh hilang dari memori... Ini
mah model CGI.. Kalo udah mulai ke FastCGI, trus dedicated kayak Mongrel,
kerasa kan ribetnya?

Di server JavaEE, hal2 tersebut sudah ada "lifecycle"-nya. Aplikasi yang
didrop akan diberi "notifikasi hoey kamu waktunya start nich" ala
script/server gitu deh. Trus kalo ada file yg berubah alias kita ingin
redeploy aplikasi tsb. maka di JavaEE server juga ada istilah "reload", dan
ini diurusin oleh server *bukan* oleh aplikasi. Trus kalo folder tersebut
didelete alias undeploy (sebenarnya bisa sih pake web interface kita klik
tombol "Deploy", tapi "ribet" hehehe... mending pencet DEL aja :P ) maka
aplikasi tersebut akan di-notify "oey tolong clean dong dirimu dari memory"
... simpel kan.. sapa bilang JavaEE tuh rumit :-P

Justru RoR rumit karena dari awal dia mbikin hal-hal yang sebenarnya sudah
diurusin sama low-level app (kayak sebuah server)... katanya DRY principle,
mana?? Kaya perlu juga DRO = Don't Repeat Others...

di ruby jadi mikir, menerawang... apa ya kira-kira yang bisa semudah
> itu? aha! JRuby on Rails! tinggal jadi war, trus habis itu ... jadi
> penasaran liat teman2x java demokan kemudahan itu sinergi dengan Ruby.
>

Setuju... saya sendiri belom pernah first hand experience, tapi mbaca
blognya orang2 sono yang sudah pada berhasil **dengan riang** , saya terus
terang tertarik dan kayanya bagus :)


> Atau, buat yang development dan deployment pake ruby murni maupun selain
> JRuby : ada solusi atau akal-akalan lain gak yah buat deployment manja
> gini? -_-
>

Di kerjaan gw lebih banyak "memasukkan Ruby ke dalam aplikasi Java" dan
bukannya "menjalankan aplikasi Ruby di atas JavaVM". Tapi either way bagus2
aja koq.

Simak saja Ola Bini yang semangat banget (secara core dev JRuby getoh),,
tapi secara umum gw setuju dengan poin2 dia -- secara udah nyicip for real
:-)

Presentasinya di sini :
http://www.slideshare.net/deimos/ola-bini-j-ruby-power-on-the-jvm

Gw kasih cuplikannya ya...

*Ruby Issues - Threading*
• Ruby 1.8: Green threading
  •  No scaling across processors/cores
  •  C libraries won't/can't yield
  •  One-size-fits-all scheduler
• Ruby 1.9: Native, non-parallel execution
• JRuby:
  •  Ruby threads are Java threads
  •  World class scheduler with tunable algorithms

*Ruby Issues - Unicode*
• Ruby 1.8: Partial Unicode
  •  Internet connection applications MUST have solid Unicode
  •  Ruby 1.8 provides very partial support
  •  App devs roll their own: Rails Multi-byte
• Ruby 1.9: Full encoding support
  •  Drastic changes to interface and implementation
  •  Performance issues
  •  Each string can have its own encoding
• JRuby: Java Unicode

*Ruby Issues - Performance*
• Ruby 1.8: Slower than most languages
  •  1.8 is usually called "fast enough"
  •  ...but routinely finishes last
  •  ...and no plans to improve in 1.8
• Ruby 1.9: Improvement, but not scalable
  •  New engine about 1.5x for general appliciations
  •  Only implicit AOT compilation
  •  No JIT, no GC or threading changes
• JRuby: Compiler provides better performance

*Ruby Issues - Memory*
• Ruby 1.8: Memory management
  •  Simple design
  •  Good for many apps, but not scalable
  •  Stop-the-world GC
• Ruby 1.9: No change
  •  Improved performance => more garbage
  •  GC problems could multiply
• JRuby: World class Java GC's

*Ruby Issues - C*
• Ruby 1.8 & 1.9: C language extensions
  •  C is difficult to write well
  •  Badly-behaved extensions can cause large problems
  •  Threading and GC issues relating to extensions
  •  Portable, but often with recompilation
  •  No security restrictions in the system
• JRuby
  •  Java extensions
  •  GC and threading no problem

Kesimpulannya apa? *All the goodness of Ruby, with all the goodness of
Java(VM), robust implementation, without the quirks that other Ruby
implementations suffer from!*

Java secara language aja punya hal2 yang di Ruby gak ada... percaya ga?
Annotations! Ini sudah ada di C# / .NET sejak versi 1.0, di Java sejak Java
1.4 (sekarang udah Java 1.6).. dan alhamdulillaah JRuby juga "support" tuh
:) Meski dengan syntax 'primitif' yang mirip2 Javadoc-based annotation...
kalo di JRuby Rdoc-based annotation kalee:

http://blogs.sun.com/sandoz/entry/annotated_scala_groovy_jruby_rhino
 (perbandingan dengan the big 4 JVM languages: Scala, Groovy,
Rhino/Javascript, Jython, kurang BeanShell nich tapi wajar -- BeanShell mah
Java2 aja...)

"ActiveRecord" (EJB Entity) ala Groovy + annotations:

@Entity
@Table(name="staff")
class Staff implements Serializable {
    @Id @GeneratedValue
    Long id
    String firstname
    String lastname
    String position
}

(siapa bilang Java nggak bisa saingan ama ActiveRecord, tuh di atas
buktinya!!)

Sebenere ngiri ama Scala (yang syntaxnya lebih canggih dari Java, dan bisa
menyaingi *clean*-nya .NET) :

@SourceURL("http://coders.com/";)
          { val mail = "[EMAIL PROTECTED]" }
    class MyScalaClass ...

Bandingkan dengan kejorokan Ruby ala RDoc annotations:

# This is a mojo description
# @goal
# @phase "validate"
# @requiresDependencyResolution "compile"
class MyMojo < Mojo


Oya code jorok tsb. terinspirasi dari
http://mojo.codehaus.org/jruby-maven-plugin/index.html yang merupakan projek
'ajaib', kenapa ajaib karena di situ menggabungkan keunggulan Maven (dari
dunia Java) dengan bahasa/aplikasi Ruby ...

Hopefully sooner than later enough kita nggak perlu ribet dengan urusan
Capistrano, Mongrel, fastcgi dan kawan2 plus dependency dan goldspike etc.
tinggal:

mvn jetty:run          # aka 'script/server'
mvn test                # aka 'rake test'
mvn site                # aka 'rake rdoc' plus plus
mvn package         # jadilah .war yang siap di-attach email buat client
kita
scp target/aplikasigue.war [EMAIL PROTECTED]:/opt/tomcat/webapps/       #
aka 'cap deploy', masak gini aja perlu bikin tool sih -- cape de!

Intinya Maven bisa melakukan semua pekerjaan yang biasanya kita lakukan,
bedanya adalah perintah2 di atas berlaku 'universal'.. mo pake Java, Flex,
Groovy, Struts, Spring, perintah2nya sama persis...

Ah... koq jadi banyak ngelantur yah *"sorry" for my rants* (katanya Arie
nggak boleh ngomong sorry sembarangan, jadi ...)

-- 
Best regards,
Hendy Irawan


[Non-text portions of this message have been removed]


------------------------------------

ID-Ruby
Berdiskusi dan belajar bersama Bahasa Pemrograman Ruby, termasuk segala varian 
Ruby (JRuby, Rubinius, IronRuby, XRuby), dan program yang dibuat dengan Ruby 
(Ruby on Rails, JRuby on Rails, Merb)

<*> Kunjungi *arsip milis* id-ruby di
    http://groups.yahoo.com/group/id-ruby/messages
    http://www.mail-archive.com/[email protected]/
    http://rubyurl.com/Q8DD
    http://news.gmane.org/gmane.comp.lang.ruby.region.indonesia

<*> Baca peraturan id-ruby sebelum posting
    http://rubyurl.com/gay1

<*> Ikutilah Jajak Pendapat ID-Ruby
    http://rubyurl.com/3CCt

<*> Links ID-Ruby
    http://rubyurl.com/n96r

<*> Database ID-Ruby
    http://rubyurl.com/Iw3u

<*> Kunjungi Situs Resmi Ruby Indonesia
    http://www.ruby-lang.org/id/

<*> Join Ruby Indonesia on Facebook
    http://rubyurl.com/QV48

<*> Join Ruby Indonesia on LinkedIn
    http://rubyurl.com/eh0i

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/id-ruby/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/id-ruby/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:[EMAIL PROTECTED] 
    mailto:[EMAIL PROTECTED]

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/

Kirim email ke