Menu

[642ad0]: / docs / src / developer / introduction.docbook  Maximize  Restore  History

Download this file

73 lines (54 with data), 7.9 kB

<!--
  Introductory chapter for the DrJava Developer Documentation.  All 
  chapters are joined into a single document in devdoc.docbook.
  
  @version $Id: devdoc.docbook 3498 2006-01-17 22:36:31Z dlsmith $
-->

<chapter id="introduction">
  <title>Introduction</title>
  
  <para>This document is primarily intended as an orientation resource and collection of acquired knowledge for Rice students working as DrJava developers.  As an open-source project, DrJava's source code is also available for browsing and modification to the general public, and so the following will also serve to provide those interested with the necessary tools to build, fix, and improve the code base.  (Although we do not usually provide direct Subversion commit access to individuals outside the Rice development team, interested parties are welcome to submit changes via the SourceForge Tracker forums.)</para>
  
  <section>
    <title>Overview</title>
  
    <para>We cover the following topics:
    
      <itemizedlist>
        <listitem><para><link linkend="introduction">Introduction</link> provides a high-level sense of purpose and history for the DrJava project.</para></listitem>

        <listitem><para><link linkend="gettingStarted">Getting Started</link> describes how to set up and use the essential tools required to build and modify the DrJava source code.</para></listitem>
      
        <listitem><para><link linkend="supportingTechnology">Supporting Technology</link> provides a more in-depth guide to a variety of third-party technologies (applications and libraries) used to build and run DrJava.</para></listitem>
      
        <listitem><para><link linkend="systemArchitecture">System Architecture</link> provides a high-level view of the DrJava sources.  It describes the code organization and discusses various significant design decisions.</para></listitem>
      
        <listitem><para><link linkend="bestPractices">Development Best Practices</link> describes the coding and testing standards we maintain (or aspire to) in the DrJava code base.</para></listitem>
      
        <listitem><para><link linkend="projectAdministration">Project Administration</link> contains instructions directed at project administrators.  It covers, for example, making official DrJava releases and maintaining the project Web site.</para></listitem>
      </itemizedlist>
    </para>
  </section>
  
  
  <section>
    <title>Project Philosophy</title>
    <para>DrJava is a lightweight, powerful Java development environment.  Its target audience includes both beginning Computer Science students and advanced professional users.  Clearly, there is a tension between these goals &mdash; "lightweight" versus "powerful"; "beginning" versus "advanced."  This tension is generally resolved by <emphasis>ensuring</emphasis> the prior conditions &mdash; that DrJava be easy to use and inobtrusive for beginners &mdash; and adding "advanced" features only if they can be presented in a simple, lightweight (both in terms of system resources and user interface) manner.  The interactions pane is an ideal example of a nice marriage between the goals of simplicity and power.  It is easy for beginners to understand and use &mdash; in fact, it's where many beginners get their first taste of Java programming.  Yet professional developers also find it quite handy, and sometimes lament the lack of something like it in heavier-weight IDEs.</para>
      
    <para>Because DrJava was originally conceived as a teaching tool, and because it has been almost entirely developed by undergraduate and graduate students, it is uniquely positioned to address the needs of students, teachers, and researchers.  We hope that this fount of experience will translate into a relevant, useful, and unique product.  However, development on the project is at a relative disadvantage due to the lack of a full-time or long-term workforce.  These challenges are addressed by maintaining a self-documenting, self-testing code base.  Developers should keep in mind that the code they write will be browsed and modified subsequently by many others, and if the reasoning behind the code is not documented by comments and tests, it will probably be lost.</para>
    
    <para>Finally, DrJava is open source software.  [TODO: discuss; explain the DrJava license]</para>
  </section>
  
  
  <section>
    <title>Project History</title>
    <para>[TODO: expand this section]</para>
    <para>Some major milestones:
      <itemizedlist>
        <listitem><para>June 2001: Initial development began, led by Bryan Stoler.  The Generic Java compiler was used for development and supported by the IDE.  Code was maintained in a CVS repository, hosted by SourceForge.</para></listitem>
        <listitem><para>July 2002: First stable release.</para></listitem>
        <listitem><para>June 2003: Made a first release of the DrJava Eclipse plug-in.</para></listitem>
        <listitem><para>Summer 2003: Added a Javadoc feature, comprehensive JUnit testing, global find and replace, and Interactions scripting via histories; provided the Interactions pane with access to local variables during debugging; began supporting Java 5 (then JSR-14) features in DynamicJava.</para></listitem>
        <listitem><para>February 2004: Began directly manipulating and testing the DynamicJava code within the DrJava source tree.</para></listitem>
        <listitem><para>March 2004: Ended support for Java 1.3; began supporting compilation with Java 5 (in beta release).</para></listitem>
        <listitem><para>Summer 2004: Added persistent Projects with a tree-based file browser; introduced Language Levels, developed as a separate SourceForge project (javalanglevels); significantly improved support for Java 5 features (generics, boxing, varargs, static imports, for-each) in DynamicJava.</para></listitem>
        <listitem><para>August 2005: Restructured the source tree into separate CVS modules (drjava, dynamicjava, eclipse, etc.), each independently-buildable, with a revised build script and libraries at the top level of each tree.  Began using Retroweaver for clean backwards-compatibility with Java 1.4.</para></listitem>
        <listitem><para>September 2005: The number of monthly downloads exceeds 10,000 for the first time, with a final monthly count of 16,621.</para></listitem>
        <listitem><para>March 2006: Migrated the sources from CVS to Subversion (both hosted by SourceForge).</para></listitem>
        <listitem><para>March 2006: Added Java 6 compiler support.</para></listitem>
        <listitem><para>June 2006: Introduced the PLT Utilities subtree as a repository of general-purpose code.</para></listitem>
        <listitem><para>June 2006: Migrated the Language Levels code from a separate SourceForge project to a subtree in the DrJava repository.</para></listitem>
        <listitem><para>Summer 2006: Added "Find All", "Go to File", and "Bookmarks"; greatly improved the tools.jar search, generally preventing the need to locate it manually.</para></listitem>
        <listitem><para>Fall 2006: Another year of dramatic growth in the number of downloads led to two 20,000+ download months, a peak SourceForge ranking of #62, and the top ranking among IDEs.</para></listitem>
        <listitem><para>December 2007: Reimplemented most of the DynamicJava interpreter in order to support correct type checking of generics and to fix a variety of other bugs.  Old code remained in the "koala.dynamicjava" package, while new code was placed in "edu.rice.cs.dynamicjava".</para></listitem>
        <listitem><para>April 2008: Changed the project file format to an XML-based syntax.</para></listitem>
        <listitem><para>November 2008: Stopped supporting Java 1.4, eliminating the use of Retroweaver to produce backwards-compatible class files.</para></listitem>
      </itemizedlist>
    </para>
  </section>
  
</chapter>
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.