Difference between revisions of "Dynamic Build Languages"

From CitconWiki
Jump to navigationJump to search
Line 6: Line 6:
  
 
== What's the current state of Java build tools? ==
 
== What's the current state of Java build tools? ==
 +
 +
Performance is not always optimal. 
  
 
=== ant ===
 
=== ant ===
* programming in xml
+
* programming in xml doesn't make sense
* big ball of ant
+
* big ball of ant problem
* few conventions lots of rope to hang yourself
+
** the 9000 line "untouchable" collection of build script
 +
* few conventions  
 +
** lots of rope to hang yourself
 
* hard to refactor
 
* hard to refactor
* ill-conceived
+
* ill-conceived  
 +
** even JDD has disowned it
  
== maven ==
+
=== maven ===
* too much voodoo not enough docs
 
* simple things are simple
 
* moderate things are really hard (write a plugin)
 
* hard things are virtually impossible
 
* kind of buggy
 
 
* good conventions but hard to diverge from the norm
 
* good conventions but hard to diverge from the norm
* declarative model is too strict
+
** simple things are simple
* appeals to the less experienced
+
** 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 ==
+
=== rake ===
 
* testing your build?
 
* testing your build?
* need a first class language
+
** once it gets really big you need to be able to reason about your build. 
* file dependency - what changed? do it anyway not optimal speed
+
** tests could allow you to refactor/optimise/etc without breaking anything
 +
* 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
 
* auto checking of timestamps
* separate the definition of dependencies - who depends on me?
 
* auto include of rake files easy factoring
 
* builtin namespaces
 
* plugins in ruby simple
 
  
= capistrano for java deployment =
+
= Deployment tools =
  
* posix only - no windows
+
== Capistrano for Java deployment? ==
* peepcode - building ubuntu -ssh
 
  
* convincing management?
+
* posix only (no windows yet)
 +
** installing cygwin is a solution
 +
** write adapters for the commands used (ssh, ftp, etc)
 +
* peepcode demo
 +
** building ubuntu box remotely via ssh
 +
* 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

Revision as of 18:05, 28 July 2007

"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
  • 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

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)
  • peepcode demo
    • building ubuntu box remotely via ssh
  • 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