Difference between revisions of "Dynamic Build Languages"

From CitconWiki
Jump to navigationJump to search
(New page: "Harnessing the power of magic..." = Build Tools = What's the current state of play? == ant == programming in xml big ball of ant few conventions lots of rope to hang yourself hard to ...)
 
(Removed spam)
 
(17 intermediate revisions by 6 users not shown)
Line 1: Line 1:
"Harnessing the power of magic..."
+
ricboccpasmo
 +
relrelnolib
 +
''"Harnessing the power of magic..."''
  
 +
Facilitated by Josh Price and Tom Adams
  
 
= Build Tools =
 
= Build Tools =
  
What's the current state of play?
+
== What's the current state of Java build tools? ==
  
== ant ==
+
Performance is not always optimal. 
programming in xml
 
big ball of ant
 
few conventions lots of rope to hang yourself
 
hard to refactor
 
ill-conceived
 
  
== maven ==
+
=== ant ===
too much voodoo not enough docs
+
* programming in xml doesn't make sense
simple things are simple
+
* big ball of ant problem
moderate things are really hard (write a plugin)
+
** the 9000 line "untouchable" collection of build script
hard things are virtually impossible
+
* few conventions
kind of buggy
+
** lots of rope to hang yourself
good conventions but hard to diverge from the norm
+
* hard to refactor
declarative model is too strict
+
* ill-conceived
appeals to the less experienced
+
** even JDD has disowned it
  
== rake ==
+
=== maven ===
testing your build?
+
* good conventions but hard to diverge from the norm
need a first class language
+
** simple things are simple
file dependency - what changed? do it anyway not optimal speed
+
** moderate things are really hard (write a plugin)
auto checking of timestamps
+
** hard things are virtually impossible
separate the definition of dependencies - who depends on me?
+
* too much voodoo
auto include of rake files easy factoring
+
* not enough docs
builtin namespaces
+
** hard to find where/how to configure things
plugins in ruby simple
+
* kind of buggy
 +
** (I think this was attributed to plugins)
 +
* declarative model is too strict
 +
** flexibility is needed here
 +
* appeals to the less experienced
 +
** can get yourself in trouble if you assume it all just works
  
= capistrano for java deployment =
+
== What can Java learn from Ruby? ==
  
posix only - no windows
+
=== rake ===
peepcode - building ubuntu -ssh
+
* testing your build?
 +
** once it gets really big you need to be able to reason about your build. 
 +
** tests could allow you to refactor/optimise/etc without breaking anything
 +
** testing is much simpler with a real language
 +
*** if you're stuck with ant you could use antunit (http://ant.apache.org/antlibs/antunit/)
 +
* we really need a first class language for flexibility
 +
** programming in xml doesn't make sense
 +
** pure declarative model solves some problems but reduces flexibility
 +
* auto include of rake files allows easy factoring
 +
* possible to separate the definition of dependencies - who depends on me?
 +
* builtin namespaces (ie db:*, test:*)
 +
* plugins in ruby are really simple
 +
** monkey patching
 +
* file dependency checking is built in
 +
** what changed? do it anyway not optimal speed
 +
* auto checking of timestamps
  
convincing management?
+
=== raven ===
 +
 
 +
* java builds using rake and gems
 +
** http://raven.rubyforge.org/
 +
* Book just released
 +
** http://www.apress.com/book/bookDisplay.html?bID=10333
 +
 
 +
= Deployment tools =
 +
 
 +
== Capistrano for Java deployment? ==
 +
 
 +
* posix only (no windows yet)
 +
** installing cygwin is a solution
 +
** write adapters for the commands used (ssh, ftp, etc)
 +
* version 2.0 just released
 +
* peepcode demo (http://topfunky.com/clients/peepcode/free-episodes/peepcode-free-deprec.mov)
 +
** building ubuntu box remotely via ssh
 +
** using the deprec gem (http://www.deprec.org/)
 +
* convincing management that using a Ruby tool on a Java project is a good thing
 +
** it's often easier to just do it and show the benefits
 +
** ask for forgiveness rather than permission
 +
 
 +
=== Links ===
 +
 
 +
* http://www.capify.org/upgrade/whats-new
 +
** The Event framework look particularly interesting
 +
* http://www.iseff.com/2007/03/capistrano-and-java.html
 +
* http://www.oreillynet.com/ruby/blog/2007/04/capistrano_20_not_just_for_rai.html
 +
* http://www.smartfrog.org - SmartFrog is a technology for describing distributed software systems as collections of cooperating components, and then activating and managing them. It was developed at HP Labs in Bristol, in the UK. The core SmartFrog framework is released under LGPL.

Latest revision as of 01:28, 1 November 2007

ricboccpasmo relrelnolib "Harnessing the power of magic..."

Facilitated by Josh Price and Tom Adams

Build Tools

What's the current state of Java build tools?

Performance is not always optimal.

ant

  • programming in xml doesn't make sense
  • big ball of ant problem
    • the 9000 line "untouchable" collection of build script
  • few conventions
    • lots of rope to hang yourself
  • hard to refactor
  • ill-conceived
    • even JDD has disowned it

maven

  • good conventions but hard to diverge from the norm
    • simple things are simple
    • moderate things are really hard (write a plugin)
    • hard things are virtually impossible
  • too much voodoo
  • not enough docs
    • hard to find where/how to configure things
  • kind of buggy
    • (I think this was attributed to plugins)
  • declarative model is too strict
    • flexibility is needed here
  • appeals to the less experienced
    • can get yourself in trouble if you assume it all just works

What can Java learn from Ruby?

rake

  • testing your build?
    • once it gets really big you need to be able to reason about your build.
    • tests could allow you to refactor/optimise/etc without breaking anything
    • testing is much simpler with a real language
  • we really need a first class language for flexibility
    • programming in xml doesn't make sense
    • pure declarative model solves some problems but reduces flexibility
  • auto include of rake files allows easy factoring
  • possible to separate the definition of dependencies - who depends on me?
  • builtin namespaces (ie db:*, test:*)
  • plugins in ruby are really simple
    • monkey patching
  • file dependency checking is built in
    • what changed? do it anyway not optimal speed
  • auto checking of timestamps

raven

Deployment tools

Capistrano for Java deployment?

  • posix only (no windows yet)
    • installing cygwin is a solution
    • write adapters for the commands used (ssh, ftp, etc)
  • version 2.0 just released
  • peepcode demo (http://topfunky.com/clients/peepcode/free-episodes/peepcode-free-deprec.mov)
  • convincing management that using a Ruby tool on a Java project is a good thing
    • it's often easier to just do it and show the benefits
    • ask for forgiveness rather than permission

Links