Initial add of defaria.com
[clearscm.git] / defaria.com / blogs / Status / 2006 / 04 / ant-rant.html
1 <!DOCTYPE html>
2 <html lang="en-us" itemscope itemtype="http://schema.org/Article">
3   <head>
4     <meta charset="utf-8">
5     <meta name="description" content=" Studying Ant...">
6     <meta name="generator" content="Movable Type 5.2.3">
7     <title>Ant Rant - Status</title>
8     <link rel="alternate" type="application/atom+xml" title="Recent Entries" href="http://defaria.com/blogs/Status/atom.xml">
9     <link rel="canonical" href="http://defaria.com/blogs/Status/2006/04/ant-rant.html">
10     <meta name="viewport" content="width=device-width,initial-scale=1">
11     <link rel="stylesheet" href="http://defaria.com/blogs/Status/styles.css">
12     <!--[if lt IE 9]>
13     <link rel="stylesheet" href="http://defaria.com/blogs/Status/styles_ie.css">
14     <script src="/mt/mt-static/support/theme_static/rainier/js/html5shiv.js"></script>
15     <![endif]-->
16     
17     <link rel="start" href="http://defaria.com/blogs/Status/">
18
19     <link rel="prev" href="http://defaria.com/blogs/Status/2006/04/production-user.html" title="Production User Database Migrated">
20     <link rel="next" href="http://defaria.com/blogs/Status/2006/04/gethostbyaddr-f.html" title="gethostbyaddr fails">
21     <!-- Open Graph Protocol -->
22     <meta property="og:type" content="article">
23     <meta property="og:locale" content="en-us">
24     <meta property="og:title" content="Ant Rant">
25     <meta property="og:url" content="http://defaria.com/blogs/Status/2006/04/ant-rant.html">
26     <meta property="og:description" content=" Studying Ant...">
27     <meta property="og:site_name" content="Status">
28     <meta property="og:image" content="/mt/mt-static/support/theme_static/rainier/img/siteicon-sample.png">
29     <!-- Metadata -->
30     <meta itemprop="description" content=" Studying Ant...">
31     <link itemprop="url" href="http://defaria.com/blogs/Status/2006/04/ant-rant.html">
32     <link itemprop="image" href="/mt/mt-static/support/theme_static/rainier/img/siteicon-sample.png">
33     
34   </head>
35   <body>
36     <div id="container">
37       <div id="container-inner">
38         <header id="header" role="banner">
39           <div id="header-inner">
40             <div id="header-content">
41               <h1>
42                 <a href="http://defaria.com/blogs/Status/">
43
44                   Status
45
46                 </a>
47               </h1>
48               
49             </div>
50
51             <nav role="navigation">
52           <ul>
53             <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
54
55
56           </ul>
57         </nav>
58
59           </div>
60         </header>
61         <div id="content">
62           <div id="content-inner">
63             <ul class="breadcrumb breadcrumb-list">
64               <li class="breadcrumb-list-item"><a href="http://defaria.com/blogs/Status/">Home</a></li>
65               <li class="breadcrumb-list-item">Ant Rant</li>
66             </ul>
67             <div id="individual-main" class="main" role="main">
68               <article id="entry-1805" class="entry entry-asset asset hentry">
69                 <div class="asset-header">
70                   <h2 itemprop="name" class="asset-name entry-title">Ant Rant</h2>
71                   <footer class="asset-meta">
72                     <ul class="asset-meta-list">
73                       <li class="asset-meta-list-item">Posted on <time datetime="2006-04-17T17:06:26-08:00" itemprop="datePublished">April 17, 2006</time></li>
74                       <li class="asset-meta-list-item">by <span class="author entry-author vcard"></span></li>
75
76   
77                       <li class="asset-meta-list-item">in <a itemprop="articleSection" rel="tag" href="http://defaria.com/blogs/Status/hewlett-packard/">Hewlett Packard</a></li>
78   
79
80                    </ul>
81                 </footer>
82                 </div>
83                 <div class="entry-content asset-content" itemprop="articleBody">
84                   <ul>
85   <li>Studying Ant</li>
86 </ul>
87                   <p>Recently I started looking into Ant more seriously. Seems like it'd be a good thing to do for my career. But I must tell you, I'm not quite convinced that Ant's a solution to anything except to say that it's probably a more comfortable make for people who think in terms of Java only.</p>
88
89 <p>Here's some quotes from the main <a href="http://ant.apache.org/">Ant page</a>:</p>
90
91 <blockquote>
92   Apache Ant is a Java-based build tool. In theory, it is kind of like Make, but without Make's wrinkles.
93 </blockquote>
94
95 <p>Make wrinkles?!? What wrinkles? Wrinkles are the sign of age and wisedom. Just because you don't understand it do not play it off as if it's bad.</p>
96
97 <blockquote>
98   Why another build tool when there is already make, gnumake, nmake, jam, and others? Because all those tools have limitations that Ant's original author couldn't live with when developing software across multiple platforms. Make-like tools are inherently shell-based -- they evaluate a set of dependencies, then execute commands not unlike what you would issue in a shell. This means that you can easily extend these tools by using or writing any program for the OS that you are working on. However, this also means that you limit yourself to the OS, or at least the OS type such as Unix, that you are working on.
99 </blockquote>
100
101 <p>That's true. But no more true than the fact that if you want to run make on any other system you also need to have make available on that other system! I take the above to mean that you have a tendency to extend your build to what is natural on the OS in question and thus you start using Unix shell commands and the like. OK. However where, in the scheme of things, can one not run Unix shell commands now a days? Surely Unix and Linux have that covered, and Mac OS/X is basically Unix under the hood too. What  you mean Windows? Well <a href="http://cygwin.com">Cygwin</a> also has that pretty much covered. So then, why avoid a well known, well understood and time test utilitiy such as make?
102
103 <blockquote>
104   Makefiles are inherently evil as well. Anybody who has worked on them for any time has run into the dreaded tab problem. "Is my command not executing because I have a space in front of my tab!!!" said the original author of Ant way too many times. Tools like Jam took care of this to a great degree, but still have yet another format to use and remember.
105 </blockquote>
106
107 Ah so now we see the real motivation that the original author had for discarding make! He couldn't remember to start his lines with a tab character!
108
109 <blockquote>
110   Ant is different. Instead of a model where it is extended with shell-based commands, Ant is extended using Java classes. Instead of writing shell commands, the configuration files are XML-based, calling out a target tree where various tasks get executed. Each task is run by an object that implements a particular Task interface.
111 </blockquote>
112
113 <p>Which I guess would be find if you are better at writing Java classes instead of shell commands or other scripts. And why is it that all new, improved, better things must incorporate whatever is in vogue at the time? Do we really need XML files instead of just straightforward ASCII text? And must everything be an object?</p>
114
115 <blockquote>
116   Granted, this removes some of the expressive power that is inherent by being able to construct a shell command such as `find . -name foo -exec rm {}`, but it gives you the ability to be cross platform -- to work anywhere and everywhere. And hey, if you really need to execute a shell command, Ant has an <exec> task that allows different commands to be executed based on the OS that it is executing on. 
117 </blockquote>
118
119 <p>Ant is only as cross platform as the platforms that ant has been ported to! With things like Cygwin there no need to throw the baby out with the bath water over a few misplaced tabs. Still I guess ant has it's place and I'm sure it's comfortable for Java developers. Sure having an object oriented design probably isn't bad but now people need to learn yet another language - Java - even if they are not developing in Java. And they need to learn XML, etc. And you don't only lose the power and expressiveness of the shell but it seems to me you just lost support for just about all the other langauges as well. AFAICT I see no built in support for Ada, FORTRAN, Pascal, etc.</p>
120                 </div>
121                 <nav class="page-navigation entry-navigation pagination content-nav">
122                   <ul class="page-navigation-list">
123
124                     <li class="page-navigation-list-item page-navigation-prev"><a rel="prev" href="http://defaria.com/blogs/Status/2006/04/production-user.html" title="Production User Database Migrated">Previous entry</a></li>
125
126
127                     <li class="page-navigation-list-item page-navigation-next"><a rel="next" href="http://defaria.com/blogs/Status/2006/04/gethostbyaddr-f.html" title="gethostbyaddr fails">Next entry</a></li>
128
129                   </ul>
130                 </nav>
131                 <!--
132 <aside id="zenback" class="zenback feedback">
133   Please paste Zenback script code here.
134 </aside>
135 -->
136                 
137                 
138               </article>
139             </div>
140             <aside class="widgets related" role="complementary">
141               <nav class="widget-search widget">
142   <div class="widget-content">
143     <form method="get" id="search" action="http://defaria.com/mt/mt-search.cgi">
144       <div>
145         <input type="text" name="search" value="" placeholder="Search...">
146
147         <input type="hidden" name="IncludeBlogs" value="8">
148
149         <input type="hidden" name="limit" value="20">
150         <button type="submit" name="button">
151           <img alt="Search" src="/mt/mt-static/support/theme_static/rainier/img/search-icon.png">
152         </button>
153       </div>
154     </form>
155   </div>
156 </nav>
157 <nav class="widget-archive-category widget">
158   <h3 class="widget-header">Categories</h3>
159   <div class="widget-content">
160     
161       
162     <ul class="widget-list">
163       
164       
165       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/ameriquest/">Ameriquest (99)</a>
166       
167       
168       </li>
169       
170     
171       
172       
173       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/audience/">Audience (3)</a>
174       
175       
176       </li>
177       
178     
179       
180       
181       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/broadcom/">Broadcom (76)</a>
182       
183       
184       </li>
185       
186     
187       
188       
189       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/gpdb/">GPDB (35)</a>
190       
191       
192       </li>
193       
194     
195       
196       
197       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-dynamics/">General Dynamics (61)</a>
198       
199       
200       </li>
201       
202     
203       
204       
205       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-electric/">General Electric (13)</a>
206       
207       
208       </li>
209       
210     
211       
212       
213       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/hewlett-packard/">Hewlett Packard (13)</a>
214       
215       
216       </li>
217       
218     
219       
220       
221       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/lynuxworks/">LynuxWorks (162)</a>
222       
223       
224       </li>
225       
226     
227       
228       
229       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/pqa/">PQA (35)</a>
230       
231       
232       </li>
233       
234     
235       
236       
237       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/salira/">Salira (79)</a>
238       
239       
240       </li>
241       
242     
243       
244       
245       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/tellabs/">Tellabs (2)</a>
246       
247       
248       </li>
249       
250     
251       
252       
253       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/texas-instruments/">Texas Instruments (31)</a>
254       
255       
256       </li>
257       
258     </ul>
259       
260     
261   </div>
262 </nav>
263   
264
265 <nav class="widget-archive-dropdown widget">
266   <h3 class="widget-header">Archives</h3>
267   <div class="widget-content">
268     <select>
269       <option>Select a Month...</option>
270     
271       <option value="http://defaria.com/blogs/Status/2016/02/">February 2016</option>
272     
273   
274     
275       <option value="http://defaria.com/blogs/Status/2014/09/">September 2014</option>
276     
277   
278     
279       <option value="http://defaria.com/blogs/Status/2014/04/">April 2014</option>
280     
281   
282     
283       <option value="http://defaria.com/blogs/Status/2014/03/">March 2014</option>
284     
285   
286     
287       <option value="http://defaria.com/blogs/Status/2013/02/">February 2013</option>
288     
289   
290     
291       <option value="http://defaria.com/blogs/Status/2012/09/">September 2012</option>
292     
293   
294     
295       <option value="http://defaria.com/blogs/Status/2012/08/">August 2012</option>
296     
297   
298     
299       <option value="http://defaria.com/blogs/Status/2012/05/">May 2012</option>
300     
301   
302     
303       <option value="http://defaria.com/blogs/Status/2012/04/">April 2012</option>
304     
305   
306     
307       <option value="http://defaria.com/blogs/Status/2012/02/">February 2012</option>
308     
309   
310     
311       <option value="http://defaria.com/blogs/Status/2012/01/">January 2012</option>
312     
313   
314     
315       <option value="http://defaria.com/blogs/Status/2011/10/">October 2011</option>
316     
317   
318     
319       <option value="http://defaria.com/blogs/Status/2011/07/">July 2011</option>
320     
321   
322     
323       <option value="http://defaria.com/blogs/Status/2010/09/">September 2010</option>
324     
325   
326     
327       <option value="http://defaria.com/blogs/Status/2010/08/">August 2010</option>
328     
329   
330     
331       <option value="http://defaria.com/blogs/Status/2010/04/">April 2010</option>
332     
333   
334     
335       <option value="http://defaria.com/blogs/Status/2010/03/">March 2010</option>
336     
337   
338     
339       <option value="http://defaria.com/blogs/Status/2010/02/">February 2010</option>
340     
341   
342     
343       <option value="http://defaria.com/blogs/Status/2009/05/">May 2009</option>
344     
345   
346     
347       <option value="http://defaria.com/blogs/Status/2009/04/">April 2009</option>
348     
349   
350     
351       <option value="http://defaria.com/blogs/Status/2008/07/">July 2008</option>
352     
353   
354     
355       <option value="http://defaria.com/blogs/Status/2008/05/">May 2008</option>
356     
357   
358     
359       <option value="http://defaria.com/blogs/Status/2008/04/">April 2008</option>
360     
361   
362     
363       <option value="http://defaria.com/blogs/Status/2008/03/">March 2008</option>
364     
365   
366     
367       <option value="http://defaria.com/blogs/Status/2008/02/">February 2008</option>
368     
369   
370     
371       <option value="http://defaria.com/blogs/Status/2008/01/">January 2008</option>
372     
373   
374     
375       <option value="http://defaria.com/blogs/Status/2007/12/">December 2007</option>
376     
377   
378     
379       <option value="http://defaria.com/blogs/Status/2007/11/">November 2007</option>
380     
381   
382     
383       <option value="http://defaria.com/blogs/Status/2007/10/">October 2007</option>
384     
385   
386     
387       <option value="http://defaria.com/blogs/Status/2007/09/">September 2007</option>
388     
389   
390     
391       <option value="http://defaria.com/blogs/Status/2007/08/">August 2007</option>
392     
393   
394     
395       <option value="http://defaria.com/blogs/Status/2007/07/">July 2007</option>
396     
397   
398     
399       <option value="http://defaria.com/blogs/Status/2007/06/">June 2007</option>
400     
401   
402     
403       <option value="http://defaria.com/blogs/Status/2007/05/">May 2007</option>
404     
405   
406     
407       <option value="http://defaria.com/blogs/Status/2007/04/">April 2007</option>
408     
409   
410     
411       <option value="http://defaria.com/blogs/Status/2007/03/">March 2007</option>
412     
413   
414     
415       <option value="http://defaria.com/blogs/Status/2007/01/">January 2007</option>
416     
417   
418     
419       <option value="http://defaria.com/blogs/Status/2006/12/">December 2006</option>
420     
421   
422     
423       <option value="http://defaria.com/blogs/Status/2006/11/">November 2006</option>
424     
425   
426     
427       <option value="http://defaria.com/blogs/Status/2006/10/">October 2006</option>
428     
429   
430     
431       <option value="http://defaria.com/blogs/Status/2006/09/">September 2006</option>
432     
433   
434     
435       <option value="http://defaria.com/blogs/Status/2006/07/">July 2006</option>
436     
437   
438     
439       <option value="http://defaria.com/blogs/Status/2006/06/">June 2006</option>
440     
441   
442     
443       <option value="http://defaria.com/blogs/Status/2006/05/">May 2006</option>
444     
445   
446     
447       <option value="http://defaria.com/blogs/Status/2006/04/">April 2006</option>
448     
449   
450     
451       <option value="http://defaria.com/blogs/Status/2006/03/">March 2006</option>
452     
453   
454     
455       <option value="http://defaria.com/blogs/Status/2006/02/">February 2006</option>
456     
457   
458     
459       <option value="http://defaria.com/blogs/Status/2006/01/">January 2006</option>
460     
461   
462     
463       <option value="http://defaria.com/blogs/Status/2005/12/">December 2005</option>
464     
465   
466     
467       <option value="http://defaria.com/blogs/Status/2005/11/">November 2005</option>
468     
469   
470     
471       <option value="http://defaria.com/blogs/Status/2005/10/">October 2005</option>
472     
473   
474     
475       <option value="http://defaria.com/blogs/Status/2005/09/">September 2005</option>
476     
477   
478     
479       <option value="http://defaria.com/blogs/Status/2005/08/">August 2005</option>
480     
481   
482     
483       <option value="http://defaria.com/blogs/Status/2005/07/">July 2005</option>
484     
485   
486     
487       <option value="http://defaria.com/blogs/Status/2005/06/">June 2005</option>
488     
489   
490     
491       <option value="http://defaria.com/blogs/Status/2005/05/">May 2005</option>
492     
493   
494     
495       <option value="http://defaria.com/blogs/Status/2005/04/">April 2005</option>
496     
497   
498     
499       <option value="http://defaria.com/blogs/Status/2005/03/">March 2005</option>
500     
501   
502     
503       <option value="http://defaria.com/blogs/Status/2005/02/">February 2005</option>
504     
505   
506     
507       <option value="http://defaria.com/blogs/Status/2005/01/">January 2005</option>
508     
509   
510     
511       <option value="http://defaria.com/blogs/Status/2004/12/">December 2004</option>
512     
513   
514     
515       <option value="http://defaria.com/blogs/Status/2004/09/">September 2004</option>
516     
517   
518     
519       <option value="http://defaria.com/blogs/Status/2004/08/">August 2004</option>
520     
521   
522     
523       <option value="http://defaria.com/blogs/Status/2004/07/">July 2004</option>
524     
525   
526     
527       <option value="http://defaria.com/blogs/Status/2004/06/">June 2004</option>
528     
529   
530     
531       <option value="http://defaria.com/blogs/Status/2004/05/">May 2004</option>
532     
533   
534     
535       <option value="http://defaria.com/blogs/Status/2004/04/">April 2004</option>
536     
537   
538     
539       <option value="http://defaria.com/blogs/Status/2004/03/">March 2004</option>
540     
541   
542     
543       <option value="http://defaria.com/blogs/Status/2004/02/">February 2004</option>
544     
545   
546     
547       <option value="http://defaria.com/blogs/Status/2004/01/">January 2004</option>
548     
549   
550     
551       <option value="http://defaria.com/blogs/Status/2003/12/">December 2003</option>
552     
553   
554     
555       <option value="http://defaria.com/blogs/Status/2003/11/">November 2003</option>
556     
557     </select>
558   </div>
559 </nav>
560     
561   
562
563 <div class="widget-syndication widget section">
564   <div class="widget-content">
565     <p><img src="http://defaria.com/mt/mt-static/images/status_icons/feed.gif" alt="Subscribe to feed" width="9" height="9" /> <a href="http://defaria.com/blogs/Status/atom.xml">Subscribe to this blog's feed</a></p>
566
567   </div>
568 </div>
569
570             </aside>
571           </div>
572         </div>
573         <footer id="footer" role="contentinfo">
574           <div id="footer-inner">
575             <div id="footer-content">
576   <nav role="navigation">
577           <ul>
578             <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
579
580
581           </ul>
582         </nav>
583
584   <p class="license">&copy; Copyright 2016.</p>
585   <p class="poweredby">Powered by <a href="http://www.movabletype.org/">Movable Type</a></p>
586 </div>
587           </div>
588         </footer>
589       </div>
590     </div>
591     <script src="http://defaria.com/mt/mt-static/jquery/jquery.min.js"></script>
592     <script src="http://defaria.com/blogs/Status/mt-theme-scale2.js"></script>
593   </body>
594 </html>