Difference between revisions of "Dynamic Build Languages"
From CitconWiki
Jump to navigationJump to searchLine 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 === |
− | |||
− | |||
− | |||
− | |||
− | |||
* 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 | + | ** 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 | ||
− | |||
− | |||
− | |||
− | |||
− | = | + | = Deployment tools = |
− | + | == Capistrano for Java deployment? == | |
− | |||
− | * 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