Template for Bachelor Thesis, Master Thesis, Course Paper, Seminar Paper

Total Page:16

File Type:pdf, Size:1020Kb

Template for Bachelor Thesis, Master Thesis, Course Paper, Seminar Paper MASARYK UNIVERSITY FACULTY OF INFORMATICS Scripting for the Java Platform (JSR-223) Bachelor's Thesis Student: Matej Sabo Studies: Applied Informatics Student ID: 325124 E-Mail: [email protected] Brno 2011 Declaration Hereby I declare that this paper is my original authorial work, which I have worked out by my own. All sources, references and literature used or excerpted during elabor- ation of this work are properly cited and listed in complete reference to the due source. i Abstract The aim of this work is to evaluate the potential of scripting languages on the Java Platform. The work includes a summary of strengths and weaknesses of Java and scripting languages, and an explanation of the specification JSR-223 Scripting in Java. An example application that uses the API described in the specification is presented. Selected script engine implementations are compared. In the conclusion I propose a possible direction of future development. ii Keywords Java, scripting languages, JSR-223, multilanguage programming, script engine, Groovy, Quercus, Rhino, JRuby, Jython, Clojure iii Table of Contents 1 INTRODUCTION ..................................................................................................1 2 SCRIPTING LANGUAGES AND JAVA...............................................................3 2.1 TECHNOLOGY......................................................................................................................3 2.2 JAVA..................................................................................................................................4 2.3 SCRIPTING LANGUAGES..........................................................................................................5 2.4 STRENGTHS AND WEAKNESSES OF SCRIPTING LANGUAGES..............................................................5 2.4.1 Runtime Performance.............................................................................................6 2.4.2 Development Speed................................................................................................7 2.4.3 Bugs........................................................................................................................7 2.4.4 Maintenance...........................................................................................................8 2.4.5 Scaling....................................................................................................................8 2.5 COMMON USE-CASES OF SCRIPTING LANGUAGES ON THE JAVA PLATFORM........................................8 2.5.1 Extreme programming............................................................................................8 2.5.2 Wiring together existing components.....................................................................9 2.5.3 End-user-customization..........................................................................................9 2.5.4 Prototyping.............................................................................................................9 2.5.5 Testing....................................................................................................................9 2.5.6 Administration and Management ..........................................................................9 2.5.7 User Interface Programming................................................................................10 2.5.8 Web applications .................................................................................................10 2.6 OVERVIEW OF SELECTED SCRIPTING LANGUAGES.......................................................................10 2.6.1 Groovy..................................................................................................................10 2.6.2 JavaScript – Rhino ..............................................................................................10 2.6.3 Jython ..................................................................................................................11 2.6.4 JRuby....................................................................................................................11 2.6.5 Clojure..................................................................................................................12 3 SCRIPTING IN JAVA...........................................................................................13 3.1 JSR-223: SCRIPTING FOR THE JAVA PLATFORM.......................................................................13 3.1.1 The general scripting API....................................................................................13 3.1.2 Calling scripts .....................................................................................................14 3.1.3 Calling procedures and functions within scripts..................................................15 3.1.4 Sharing objects.....................................................................................................15 3.1.5 Web Scripting Framework....................................................................................16 3.2 CUSTOM SCRIPTING IMPLEMENTATIONS....................................................................................16 3.3 SUMMARY........................................................................................................................17 4 SCRIPTING IN JAVA – EXAMPLE APPLICATION.......................................17 4.1 ANALYSIS, DESIGN AND IMPLEMENTATION ...............................................................................18 4.1.1 Requirements........................................................................................................19 4.1.2 Design..................................................................................................................20 iv 4.1.3 Implementation.....................................................................................................20 4.2 TECHNOLOGY USED IN THE APPLICATION..................................................................................20 4.2.1 Object-relational mapping...................................................................................20 4.2.2 Scripting engines..................................................................................................21 4.2.3 RSyntaxTextArea...................................................................................................22 4.3 EXAMPLE SCRIPTS..............................................................................................................22 4.4 COMPARISON OF SCRIPTING ENGINES USED IN THE APPLICATION....................................................24 4.4.1 Script Engine implementations – basic information.............................................24 4.4.2 Execution speed....................................................................................................26 4.4.3 Popularity.............................................................................................................27 4.5 SUMMARY........................................................................................................................28 5 CONCLUSION......................................................................................................29 6 ATTACHMENT.......................................................................................................I 7 BIBLIOGRAPHY..................................................................................................II v List of Figures Fig. 1: The categorization of dynamic, dynamically typed, and scripting languages.....5 Fig. 2: The performance of runtimes of scripting languages..........................................7 Fig. 3: Screenshot of the main window of the application. .........................................18 Fig. 4: The incremental development model...............................................................19 Fig. 5: The execution time for “Hello World” scripts run with Java Script Engines...27 Fig. 6: The popularity of Script Engines based on Google hits (in million)................28 List of Tables Tab. 1: The Mozilla Rhino JavaScript engine............................................................24 Tab. 2: Groovy Scripting Engine................................................................................25 Tab. 3: Jython Scripting Engine.................................................................................25 Tab. 4: JRuby Scripting Engine..................................................................................25 Tab. 5: Clojure Scripting Engine................................................................................26 Tab. 6: Quercus PHP Scripting Engine.......................................................................26 Attachment CD-ROM: Scripting Languages on the Java Platform (JSR-223).................................I vi List of Abbreviations JVM Java Virtual Machine JRE Java Runtime Environment JDK Java Development Kit JSR Java Specification Request API Application Programming Interface GUI Graphical User Interface IDE Integrated Developing Environment 7 1 Introduction The common programming practice is to choose a programming language, best suited for the project. But this is now beginning to change. The multilanguage or hybrid ap- proach allows developers to use a different language for each individual development task within one project. You can, for example, use dynamic languages with their mod- ern features, and still retain access to Java libraries, or you can use the robust
Recommended publications
  • This Article Appeared in a Journal Published by Elsevier. the Attached Copy Is Furnished to the Author for Internal Non-Commerci
    This article appeared in a journal published by Elsevier. The attached copy is furnished to the author for internal non-commercial research and education use, including for instruction at the authors institution and sharing with colleagues. Other uses, including reproduction and distribution, or selling or licensing copies, or posting to personal, institutional or third party websites are prohibited. In most cases authors are permitted to post their version of the article (e.g. in Word or Tex form) to their personal website or institutional repository. Authors requiring further information regarding Elsevier’s archiving and manuscript policies are encouraged to visit: http://www.elsevier.com/copyright Author's personal copy Computer Languages, Systems & Structures 37 (2011) 132–150 Contents lists available at ScienceDirect Computer Languages, Systems & Structures journal homepage: www.elsevier.com/locate/cl Reconciling method overloading and dynamically typed scripting languages Alexandre Bergel à Pleiad Group, Computer Science Department (DCC), University of Chile, Santiago, Chile article info abstract Article history: The Java virtual machine (JVM) has been adopted as the executing platform by a large Received 13 July 2010 number of dynamically typed programming languages. For example, Scheme, Ruby, Received in revised form Javascript, Lisp, and Basic have been successfully implemented on the JVM and each is 28 February 2011 supported by a large community. Interoperability with Java is one important require- Accepted 15 March 2011 ment shared by all these languages. We claim that the lack of type annotation in interpreted dynamic languages makes Keywords: this interoperability either flawed or incomplete in the presence of method overloading. Multi-language system We studied 17 popular dynamically typed languages for JVM and .Net, none of them Interoperability were able to properly handle the complexity of method overloading.
    [Show full text]
  • Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script Einstein J Sharp Judoscript Jasmin Beanshell
    JAVA PROGRAMMING LANGUAGE FAMILY GODIVA SCALA PROCESSING ASPECTJ GROOVY JAVAFX SCRIPT EINSTEIN J SHARP JUDOSCRIPT JASMIN BEANSHELL PDF-33JPLFGSPAGJSEJSJJB16 | Page: 133 File Size 5,909 KB | 10 Oct, 2020 PDF File: Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script 1/3 Einstein J Sharp Judoscript Jasmin Beanshell - PDF-33JPLFGSPAGJSEJSJJB16 TABLE OF CONTENT Introduction Brief Description Main Topic Technical Note Appendix Glossary PDF File: Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script 2/3 Einstein J Sharp Judoscript Jasmin Beanshell - PDF-33JPLFGSPAGJSEJSJJB16 Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script Einstein J Sharp Judoscript Jasmin Beanshell e-Book Name : Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script Einstein J Sharp Judoscript Jasmin Beanshell - Read Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script Einstein J Sharp Judoscript Jasmin Beanshell PDF on your Android, iPhone, iPad or PC directly, the following PDF file is submitted in 10 Oct, 2020, Ebook ID PDF-33JPLFGSPAGJSEJSJJB16. Download full version PDF for Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script Einstein J Sharp Judoscript Jasmin Beanshell using the link below: Download: JAVA PROGRAMMING LANGUAGE FAMILY GODIVA SCALA PROCESSING ASPECTJ GROOVY JAVAFX SCRIPT EINSTEIN J SHARP JUDOSCRIPT JASMIN BEANSHELL PDF The writers of Java Programming Language Family Godiva Scala Processing Aspectj Groovy Javafx Script Einstein J Sharp Judoscript Jasmin Beanshell have made all reasonable attempts to offer latest and precise information and facts for the readers of this publication. The creators will not be held accountable for any unintentional flaws or omissions that may be found.
    [Show full text]
  • Design and Implementation of a Behaviorally Typed Programming System for Web Services
    Universidade Nova de Lisboa Faculdade de Cienciasˆ e Tecnologia Departamento de Informatica´ Dissertac¸ao˜ de Mestrado Mestrado em Engenharia Informatica´ Design and Implementation of a Behaviorally Typed Programming System for Web Services Filipe David Oliveira Militao˜ (26948) Lisboa (2008) Universidade Nova de Lisboa Faculdade de Cienciasˆ e Tecnologia Departamento de Informatica´ Dissertac¸ao˜ de Mestrado Design and Implementation of a Behaviorally Typed Programming System for Web Services Filipe David Oliveira Militao˜ (26948) Orientador: Prof. Doutor Lu´ıs Caires J ´uri Presidente: • Doutor Jos´eAlberto Cardoso e Cunha, Professor Catedratico,´ Departamento de Informatica´ da Faculdade de Cienciasˆ e Tecnologia, Universidade Nova de Lisboa. Vogais: • Doutor Francisco Martins, Professor Auxiliar, Departamento de Informatica´ da Faculdade de Ciencias,ˆ Universidade de Lisboa. • Doutor Lu´ısManuel Marques da Costa Caires, Professor Associado, Departa- mento de Informatica´ da Faculdade de Cienciasˆ e Tecnologia, Universidade Nova de Lisboa. Disserta¸c˜aoapresentada na Faculdade de Ciˆenciase Tecnologia da Uni- versidade Nova de Lisboa para a obten¸c˜aodo Grau de Mestre em En- genharia Inform´atica. Lisboa (2008) Acknowledgements This work was partially supported by a CITI/PLM/1001/2007 research grant. v Summary The growing use of the Internet as a global infrastructure for communication between dis- tributed applications is leading to the development of a considerable amount of technologies to ease the deployment, description and data exchange among services and thus improve their in- teroperability. There is also a growing interest in the use of the “software as a service” business model where a software vendor develops and hosts applications to be used by its clients over the Internet.
    [Show full text]
  • Scripting for the Java Platform
    Scripting for the Java Platform Christopher M. Judd President/Consultant Judd Solutions, LLC Christopher M. Judd • President/Consultant of Judd Solutions • Central Ohio Java User Group (COJUG) coordinator Agenda • Java Scripting Overview •Examples –API – Script Shell – Java EE Debugging • Alternative Java Scripting Engines – Configuring –Creating • Closing Thoughts • Resources •Q&A Java is the greatest language ever invented Developer’s tools Every developer’s toolbox should contain a static typed language like Java or C# and a dynamically typed scripting language like JavaScript, Ruby or Groovy. Java Scripting • Java Scripting support added in Java SE 6 • JSR 223: Scripting for the Java Platform • Java Virtual Machine – Executes “language-neutral” bytecode – Rich class library Java JavaScript Groovy – Multi-platform JVM •Features JavaScript Groovy – API to evaluate scripts – Embedded JavaScript engine (Rhino 1.6R2) – Scripting engine discovery mechanism – Java Scripting command-line interpreter (jrunscript) Reasons for Scripting •Flexibility • Simplicity (Domain Specific Language) • Interpreted • Development productivity •Dynamic typing • Expressive syntax •FUN Scripting Uses • Configuration •Customization • Automation • Debugging • Templating •Unit Testing •Prototyping • Web Scripting • Data transport Scripting Options •JavaScript – Rhino – www.mozilla.org/rhino/ •Groovy (JSR-241) – groovy.codehaus.org •Python –Jython –www.jython.org •Ruby –JRuby–jruby.codehaus.org •TCL –Jacl–tcljava.sourceforge.net • Java (JSR-274) – BeanShell www.beanshell.org
    [Show full text]
  • Red5 Documentation Daniel Rossi Red5 Documentation Daniel Rossi Copyright © 2007 Daniel Rossi
    Red5 Documentation Daniel Rossi Red5 Documentation Daniel Rossi Copyright © 2007 Daniel Rossi Abstract Table of Contents .................................................................................................................................. 1 .................................................................................................................................. 2 Frequently Asked Questions ................................................................................... 2 Project Management ...................................................................................... 6 Server Side Development ............................................................................... 6 Codecs/Media integration ............................................................................... 7 Client Side/API Testing ................................................................................. 7 Branding/Logo/Website .................................................................................. 7 Documentation ............................................................................................. 7 .................................................................................................................................. 9 How to build with eclipse ...................................................................................... 9 ................................................................................................................................ 10 ...............................................................................................................................
    [Show full text]
  • Session 6 - Main Theme J2EE Component-Based Computing Environments
    Application Servers G22.3033-011 Session 6 - Main Theme J2EE Component-Based Computing Environments Dr. Jean-Claude Franchitti New York University Computer Science Department Courant Institute of Mathematical Sciences 1 Agenda Component Technologies Database Technology Review EJB Component Model J2EE Services JNDI, JMS, JTS, CMP/BMP/JDBC, JavaMail, etc. J2EE Web Architectures Security in J2EE Application Servers Structured Applications Design Tips Summary Readings Assignment #5 2 1 Summary of Previous Session COM and COM+ Introduction to .Net Component Technologies Object Management Architectures Java-Based Application Servers Windows Services Summary Readings Assignment #5 3 Additional References Intranet Architectures and Performance Report http://www.techmetrix.com/lab/benchcenter/archiperf/archiper ftoc.shtml#TopOfPage RMI FAQ http://java.sun.com/products/javaspaces/faqs/rmifaq.html CORBA beyond the firewall http://www.bejug.org/new/pages/articles/corbaevent/orbix/ Web Object Integration (vision document) http://www.objs.com/survey/web-object-integration.htm 4 2 Application Servers Architectures Application Servers for Enhanced HTML (traditional) a.k.a., Page-Based Application Servers Mostly Used to Support Standalone Web Applications New Generation Page-Based Script-Oriented App. Servers First Generation Extensions (e.g., Microsoft IIS with COM+/ASP) Servlet/JSP Environments XSP Environment Can now be used as front-end to enterprise applications Hybrid development environments Distributed Object
    [Show full text]
  • Abkürzungs-Liste ABKLEX
    Abkürzungs-Liste ABKLEX (Informatik, Telekommunikation) W. Alex 1. Juli 2021 Karlsruhe Copyright W. Alex, Karlsruhe, 1994 – 2018. Die Liste darf unentgeltlich benutzt und weitergegeben werden. The list may be used or copied free of any charge. Original Point of Distribution: http://www.abklex.de/abklex/ An authorized Czechian version is published on: http://www.sochorek.cz/archiv/slovniky/abklex.htm Author’s Email address: [email protected] 2 Kapitel 1 Abkürzungen Gehen wir von 30 Zeichen aus, aus denen Abkürzungen gebildet werden, und nehmen wir eine größte Länge von 5 Zeichen an, so lassen sich 25.137.930 verschiedene Abkür- zungen bilden (Kombinationen mit Wiederholung und Berücksichtigung der Reihenfol- ge). Es folgt eine Auswahl von rund 16000 Abkürzungen aus den Bereichen Informatik und Telekommunikation. Die Abkürzungen werden hier durchgehend groß geschrieben, Akzente, Bindestriche und dergleichen wurden weggelassen. Einige Abkürzungen sind geschützte Namen; diese sind nicht gekennzeichnet. Die Liste beschreibt nur den Ge- brauch, sie legt nicht eine Definition fest. 100GE 100 GBit/s Ethernet 16CIF 16 times Common Intermediate Format (Picture Format) 16QAM 16-state Quadrature Amplitude Modulation 1GFC 1 Gigabaud Fiber Channel (2, 4, 8, 10, 20GFC) 1GL 1st Generation Language (Maschinencode) 1TBS One True Brace Style (C) 1TR6 (ISDN-Protokoll D-Kanal, national) 247 24/7: 24 hours per day, 7 days per week 2D 2-dimensional 2FA Zwei-Faktor-Authentifizierung 2GL 2nd Generation Language (Assembler) 2L8 Too Late (Slang) 2MS Strukturierte
    [Show full text]
  • Liferay Third Party Libraries
    Third Party Software List Liferay Portal 6.2 EE SP20 There were no third party library changes in this version. Liferay Portal 6.2 EE SP19 There were no third party library changes in this version. Liferay Portal 6.2 EE SP18 There were no third party library changes in this version. Liferay Portal 6.2 EE SP17 File Name Version Project License Comments lib/portal/monte-cc.jar 0.7.7 Monte Media Library (http://www.randelshofer.ch/monte) LGPL 3.0 (https://www.gnu.org/licenses/lgpl-3.0) lib/portal/netcdf.jar 4.2 NetCDF (http://www.unidata.ucar.edu/packages/netcdf-java) Netcdf License (http://www.unidata.ucar.edu/software/netcdf/copyright.html) lib/portal/netty-all.jar 4.0.23 Netty (http://netty.io) Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) Liferay Portal 6.2 EE SP16 File Name Version Project License Comments lib/development/postgresql.jar 9.4-1201 JDBC 4 PostgreSQL JDBC Driver (http://jdbc.postgresql.org) BSD Style License (http://en.wikipedia.org/wiki/BSD_licenses) lib/portal/commons-fileupload.jar 1.2.2 Commons FileUpload (http://commons.apache.org/fileupload) Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) This includes a public Copyright (c) 2002-2006 The Apache Software Foundation patch for CVE-2014-0050 and CVE-2016-3092. lib/portal/fontbox.jar 1.8.12 PDFBox (http://pdfbox.apache.org) Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) lib/portal/jempbox.jar 1.8.12 PDFBox (http://pdfbox.apache.org) Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) lib/portal/pdfbox.jar 1.8.12 PDFBox (http://pdfbox.apache.org) Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) lib/portal/poi-ooxml.jar 3.9 POI (http://poi.apache.org) Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) This includes a public Copyright (c) 2009 The Apache Software Foundation patch from bug 56164 for CVE-2014-3529 and from bug 54764 for CVE-2014-3574.
    [Show full text]
  • Programmers Guide
    JBossESB 4.6 Programmers Guide JBESB-PG-7/17/09 JBESB-PG-7/17/09 Legal Notices The information contained in this documentation is subject to change without notice. JBoss Inc. makes no warranty of any kind with regard to this material, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. JBoss Inc. shall not be liable for errors contained herein or for incidental or consequential damages in connection with the furnishing, performance, or use of this material. Java™ and J2EE is a U.S. trademark of Sun Microsystems, Inc. Microsoft® and Windows NT® are registered trademarks of Microsoft Corporation. Oracle® is a registered U.S. trademark and Oracle9™, Oracle9 Server™ Oracle9 Enterprise Edition™ are trademarks of Oracle Corporation. Unix is used here as a generic term covering all versions of the UNIX® operating system. UNIX is a registered trademark in the United States and other countries, licensed exclusively through X/Open Company Limited. Copyright JBoss, Home of Professional Open Source Copyright 2006, JBoss Inc., and individual contributors as indicated by the @authors tag. All rights reserved. See the copyright.txt in the distribution for a full listing of individual contributors. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the GNU General Public License, v. 2.0. This program is distributed in the hope that it will be useful, but WITHOUT A WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
    [Show full text]
  • Apache Ant User Manual Guide – Version 1.6.0 12/29/2003 9:39 AM
    Apache Ant User Manual Guide – Version 1.6.0 12/29/2003 9:39 AM Apache Ant User Manual Guide Version 1.6.0 Compiled by: Abdul Habra (www.tek271.com) From: http://ant.apache.org/ 12/2003 Copyright © 2000-2003 Apache Software Foundation. All rights Reserved. 1 of 130 Apache Ant User Manual Guide – Version 1.6.0 12/29/2003 9:39 AM 2 of 130 Apache Ant User Manual Guide – Version 1.6.0 12/29/2003 9:39 AM Contents At A Glance 1 Apache Ant User Manual Authors ............................................................................................................9 2 Feedback and Troubleshooting .............................................................................................................10 3 Introduction.........................................................................................................................................11 4 Installing Ant .......................................................................................................................................12 5 Running Ant ........................................................................................................................................18 6 Using Ant ............................................................................................................................................23 7 Concepts .............................................................................................................................................30 8 Listeners & Loggers..............................................................................................................................86
    [Show full text]
  • Accessing Application Context Listing
    19_1936_index.qxd 7/11/07 12:14 AM Page 503 INDEX A Ant BSF Support Example Accessing Application Context listing listing (7.12), 314 (10.2), 463 Ant task, Groovy, 132-133 Active File Example listing (8.20), 376 Ant Task That Compiles All Scripts Inside Active File Generator listing (8.22), 380 the Project listing (8.10), 357 active file pattern, 375 AntBuilder Example listing (7.14), 317 consequences, 375 any( ) method, Groovy, 175-177 problem, 375 any( ) Method listing (4.30), 175 sample code, 376-380 Apache Web servers, 62 solution, 375 BSF (Bean Scripting Framework), 94 Active File Template listing (8.21), 379 APIs (application programming ADD keyword, 5 interfaces), 49 addClassPath( ) method, 324 Java, 80-82 administration append( ) method, Groovy, 181-182 scripting, 328-334 append( ) Method listing (4.39), 182 scripting languages, 55-58 application scope, Web environments, 449 Administration Script Example application variable (Groovlet), 215 listing (7.17), 329 applications Advanced Ant BSF Support Example BSF (Bean Scripting Framework), 275 listing (7.13), 315 JSP (JavaServer Pages), 275-280 Advanced AntBuilder Example Xalan-J (XSLT), 280-287 listing (7.15), 320 Java, 79 Advanced Binding Example—Java web applications, 59, 61-67 Application listing (9.13), 408 ASP (Active Server Pages), 64 Advanced Groovy Programming Example games, 68-69 listing (5.22), 225 JavaScript, 65-67 AJAX (Asynchronous JavaScript And Perl, 61-62 XML), 66 PHP, 62-64 Ant build tools, 309-322 UNIX, 68 19_1936_index.qxd 7/11/07 12:14 AM Page 504 504 INDEX apply(
    [Show full text]
  • Apache Ant User Manual
    Table of Contents Introduction Installing Ant Using Ant Running Ant Apache Ant 1.8.1 Manual Ant Tasks Concepts and Types This is the manual for version 1.8.1 of Apache Ant. If your version of Ant (as verified Loggers & Listeners with ant -version) is older or newer than this version then this is not the correct Editor/IDE Integration manual set. Please use the documentation appropriate to your current version. Also, if Developing with Ant you are using a version older than the most recent release, we recommend an upgrade Tutorials to fix bugs as well as provide new functionality. Ant API License Feedback and Troubleshooting Authors Introduction Apache Ant is a Java-based build tool. In theory, it is kind of like make, without make's wrinkles. Why? 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 on 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. Makefiles are inherently evil as well. Anybody who has worked on them for any time has run into the dreaded tab problem.
    [Show full text]