There are tons of great editors out there, complete with parsers, code completion, and syntax coloring. Although the editor is the "face" of the IDE, it's not where the action is. The real strength of any IDE is not what you see; it's what it hides from you. I would not start your project by writing the editor.
Instead, focus on the build system. That is, what happens between the time you press the "run" button and when your Java app starts? Roughly, your IDE needs to do the following:
- Set the CLASSPATH variable so JAR files can be located.
- Compile all .java files in the project.
- Locate the file with the main() method. If there's more than one, query the user. Or something else?
- Launch the .class file that contains main(), providing a console for textual I/O.
Since this is a Java IDE, you will have to make a critical decision up front:
Will you compile the source files by calling
javac on the command line and launch the app by calling
Will you compile the source files by invoking
javax.tools.JavaCompiler.CompilationTask on each file and then spawning a new Thread to run the .class file that contains main()?
One of these approaches will get you up and running quickly and has the advantage of allowing your IDE to work with other languages as well. The other will get you very intimate with Java internals, but will tie your IDE to the Java ecosystem.