Context: Over the past school year I spent a significant portion of my time preparing to teach AP CS A next year. From choosing textbooks to writing the College Board syllabus, I essentially started from scratch in designing my course. I'm pleased with all aspects of it as it currently stands, but there is one nagging element: the programming environment.

All students taking AP CS A next year have experience using Cloud9 because that's what we used for C/Python/HTML/CSS this year in AP CSP. Only in the last couple weeks did I discover how easy it is to install the JDK in a Cloud9 workspace and write, compile, and execute programs in Java from the command line. (I had read somewhere a while ago that Java and Cloud9 didn't play nicely.) I had been BlueJ all the way until that point, and I do still very much like BlueJ. However, not having taught the class before, only designed it, here's my (hopefully specific enough) question:

Will students lose anything in their understanding of and proficiency with Java, especially in terms of the AP Exam, if the class only uses a command-line environment for program compilation and execution?

There are many pros/cons to one IDE over another -- a topic which I think is too broad for this community. I just want to make sure, from those who have experience with this course, if there's something that the command-line environment lacks for students that an IDE like BlueJ doesn't lack. I don't want to end up doing students a disservice with respect to the objectives of the course based on this decision.

Edit: Cloud9 is a cloud-based IDE, which makes it ideal for my 1:1 Chromebook environment (however, I do have access to a PC lab for additional software, so that is not a restricting factor for me). As they define it, "Cloud9 combines a powerful online code editor with a full Ubuntu workspace in the cloud." You essentially get a text editor and a terminal for compiling and running programs. I've found that anything I can do via a Linux command line, I can do in Cloud9. It has a number of additional features that make it great for classroom use. I originally chose it because it's the environment used for the CS50 IDE. See more here.

  • 1
    $\begingroup$ My students learn both a command line environment (javac/java) and they use an IDE (usually drJava although some migrate to NetBeans, IntelliJ, or Eclipse). I don't know what you "lose" using the command line interface. $\endgroup$ Commented May 25, 2017 at 14:23
  • $\begingroup$ When I was in HS, we used IDEs. One teacher used NetBeans and I believe the other used Eclipse. Although students might have some trouble dealing with CLI environments when they eventually continue learning programming in college, it does remove a lot of hassle and allow students to focus on programming, not setting up the environment (can be a headache especially if you're using Windows). $\endgroup$
    – xuq01
    Commented May 25, 2017 at 19:18

3 Answers 3


Similar to @ncmathsadist, I use both command-line environments and IDEs, and I have only found them enhancing each other. We do most of our work in IDEs, but a few assignments are done in CLIs every year to ensure that students slowly gain some familiarity with those environments.

Reasons for IDEs:

  1. Convenience
  2. Easy integration with GitHub
  3. Error highlighting (though I have some issues with this)
  4. Ease with packages and project integration

Reasons for CLIs:

  1. There are still plenty of important computing platforms (including both iOS and Windows!) that ultimately reduce down to CLIs.
  2. Good luck explaining the string[] args in public static void main(String[] args) if students don't have any experience in CLIs.
  3. Even a little POSIX familiarity goes a long way.
  • $\begingroup$ Oh. wow CLIs number 2 is very interesting. I'll remember that for when I need to explain it. Thanks $\endgroup$
    – ItamarG3
    Commented May 26, 2017 at 11:09

With respect to APCS-A there won't be a difference.

Personally, I'm not overly fond of IDEs or one trick pony environments so I've encouraged our students to use an editor. I'm an Emacs wonk but the kids also use Vim, Sublime, DrJava (which is a lightweight IDE) and more.

In APCS-A they won't be getting to HUGE programs and to be honest, in my experience, an IDE like Eclipse provides too much and is too cumbersome for APCS_A.

I obviously don't know much about your specific situation (you, your kids, etc) but my general recommendation for APCS-A would be:

  1. Start with a super simple IDE like Dr.Java
  2. Possibly transition them to an editor which will serve them well no matter what language they develop in.
  3. If you're going to use an IDE look at something reasonably lightweight like the JetBrains free stuff.

I personally don't like BlueJ because while it's really nice for showing object relations the tool doesn't travel with them as they go beyond APCS-A and as I'm not a big OOP guy, I think it might push kids into thinking that every problem should be looked at an OO nail even more than APCS-A does regularly.

Another advantage about using the command line and less specific tools is that you can teach the kids more of what's really going on rather than having the IDE abstract it.


Java's core, from my experience, is writing large (or many, or both ;)) classes and files (whilst preserving SOLID principles) and then running a rather complex program, composed of those classes.

Due to this, working only with a command-line environment is somewhat losing that part of java, and might damage the students' understanding of Java.

This being said, Java 9, which will soon be released, has JShell, which incorporates a command-line environment. So it will be a 2-in-1 package. There's a pre-release version available so that you can get familiar with it (and then with teaching it). But until it's released, in my opinion it's better to work in an IDE such as eclipse or IntelliJ.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.