DrJava: An Open Source Java IDE Developed by Rice University Students, Study notes of Software Engineering

Drjava is a pedagogic java ide developed by students at rice university. It is known for its simplicity, interactivity, and high rate of turnover. The ide is open source and uses extreme programming practices. An overview of drjava's development, benefits, tools and management, educational value, complications, and lessons learned.

Typology: Study notes

Pre 2010

Uploaded on 03/18/2009

koofers-user-gov
koofers-user-gov 🇺🇸

10 documents

1 / 18

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
DrJava
Development
Charles Reis
CSE 403 Guest Lecture
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12

Partial preview of the text

Download DrJava: An Open Source Java IDE Developed by Rice University Students and more Study notes Software Engineering in PDF only on Docsity!

DrJava

Development

Charles Reis CSE 403 Guest Lecture

DrJava

  • (^) Pedagogic Java IDE
    • (^) Simple, Interactive
  • (^) Used at dozens of schools around the world
  • (^) Freely Available

Development Team

Professor PhD Student (^) Masters Student Undergrad Undergrad^ Undergrads Comp 312

On the Inside

  • (^) Java with generics (List)
  • (^) ~400 classes, 50,000 lines of code
  • (^) Complex ( unit tests are critical! )
    • (^) Two JVMs, plus multithreaded GUI
    • (^) RMI, JDI, Custom Classloaders
    • (^) Backward compatibility

Tools and Management

  • (^) Sourceforge.net
    • (^) Free hosting for 80,000 projects
    • (^) Professional management tools
      • (^) Track features, bugs, tasks, support
  • (^) Ant, JUnit, CVS

Use Existing Code

  • (^) Dynamic Java
    • (^) Java source code interpreter
    • (^) Critical to DrJava's quick maturity
  • (^) JUnit Integration

Complications

  • (^) Choice of License is tricky
    • (^) GPL : true "free software"
      • (^) All incorporated/derivative works GPL'd
    • (^) BSD : more flexible, fewer guarantees
      • (^) Allows us to use JUnit

Extreme Programming

  • (^) Simple practices that work well together
    • (^) Pair Programming
    • (^) Unit Testing
    • (^) Continuous Refactoring
    • (^) Incremental Development
    • (^) On-site Customer

Releases

  • (^) Theory : repository can always be released
  • (^) Practice : not exactly...
  • (^) Development releases (weekly/monthly)
  • (^) Stable releases (a few each year)

Life Cycle

  • (^) Peak development in spring and summer (Comp 312, summer interns)
    • (^) 3-4 large features, many small fixes
    • (^) Masters Theses
  • (^) Maintenance in "off-season"

Difficulties

  • (^) Hard to test (and design) GUIs
    • (^) Hard to enforce good test coverage
  • (^) Concurrency can be a mess
  • (^) Java isn't really platform independent...
  • (^) Tough to keep documentation up to date
  • (^) Maintenance/support is a full time job

Closing Thoughts

  • (^) Immensely satisfying to work on a widely used product
  • (^) Open source is a great fit for academia (perhaps elsewhere as well)
  • (^) XP can work very well for small teams