iStudy

Developer Information

For resources related to iStudy, see the project's Sourceforge.net project page at http://sourceforge.net/projects/istudy. This page has some information to help you get started.

Requirements

The requirements to run iStudy (in addition to including the library jars described below with the distribution) are merely Java 5 or later on Windows, OS X, or any supported system.

To build iStudy, the requirements are as follows:

Getting the Source

The best way to get the source code for iStudy is by using the Subversion repository. See the project page for more information.

Getting the Required Libraries

iStudy depends on a few libraries to run. The appropriate JAR files must be placed in the lib subdirectory of the iStudy folder before you build, or it will fail. (Actually, if you use NetBeans as described below, NetBeans will complain if it can't find these. That's a hint that you need to get them! Or if you compile "by hand," you can put them anywhere as long as you set your CLASSPATH and whatnot accordingly.)

The required libraries are:

Again, place the indicated .jar files in the <iStudy>/lib directory, where <iStudy>is the topmost project directory.

Building the Source

The easiest way to build iStudy is to open the directory into which you checked out the Subversion repository (the directory with subdirectories lib, nbproject, src, and the like) in NetBeans as a project. NetBeans will automatically read metadata stored in the nbproject folder, and you should be able to build without any modifications (except you will need to get the libraries as described above).

You can probably also use ant or even javac to compile it "by hand," but NetBeans is probably the easiest way to go.

Also, note that if you are using OS X, the use of SWT requires that you start the JVM with the -XstartOnFirstThread option (or it will crash with a message like "Illegal instruction" or "The application SWT quit unexpectedly"). If you star the JAR with java yoursef, just add it as a command-line option. Or in NetBeans, go to File > "iStudy" Properties and click the "Run" item on the left. Type -XstartOnFirstThread into the "VM Options" text box. Again, this is only for OS X.

Questions and Answers

Here are some questions I anticipate people might ask, so here are the answers! If you have any more questions, please feel free to contact me.

Why Java?
I wanted iStudy to be portable--most users I had in mind run Windows or OS X (though I was also thinking of Linux), and I wanted it to run easily on both of those without having to write two or more versions of the program. Also, I wanted to use technologies that were familiar to me, which ruled out solutions such as C++ with wxWidgets. All in all, I chose Java to allow for cross-platform compatibility and ease of development and deployment.
Why SWT?
This one is a little harder to answer. I wanted an application that looked native. While Swing is easy to use and does a good job at looking native most of the time (and is included with the JRE), I think it falters a little on OS X, one of my primary target platforms. So, I decided to give SWT, its main "competitor," a try. I had never used SWT before, so this was also kind of just an experiment on my part. I like them both, but so far I'm loving the SWT results, especially on OS X. The only downside is that a different JAR must be included for each platform. (I wouldn't be opposed to developing a Swing or other GUI at some point, but I decided to start with SWT just to see how it stacks up. And I like it. It is also worth noting that discovering MiG Layout (see the libraries, above) was a great help in being able to lay out decent GUIs and would be a big help in either SWT (as in my case) or Swing, since it works in both. If you're frustrated with other layout managers, give it a try.) Also, I know it's kind of unusual that I'm using SWT and have a NetBeans (and not Eclipse) project, but so it goes. Plus, I'm hand-coding the GUI, so it doesn't matter as much.
Under what license is iStudy released?
iStudy is available under the terms of the Mozilla Public License (MPL) version 1.1.