Contrary to popular opinion, Java is a fantastic coding language for kids to learn programming. In fact, most of KTBYTE’s core classes are in Java, with students aged 8 – 18. Why choose Java, instead of Python, C++, Javascript, or another language? Well it comes down to five areas:
1. Java is the most commonly required language for high school students in the US
2. Java gives students many options when it comes to competitions, hackathons, or independent projects
3. Java can be a great gateway to more serious programming such as in games (Minecraft), phones (Android), or enterprise web sites.
4. Java can be extremely user friendly, especially when combined with student friendly libraries such as Processing
5. Java is a great way to learn concepts for other serious programming languages (Not only C++, Python, Javascript, PHP, etc, but also JVM languages Groovy, Scala, Kotlin, and Clojure)
1. Java is the most commonly required language for high school students in the US
“AP Computer Science A” is the only test accredited by the College Board where students write a computer program. This exam uses Java and only Java since 2003. Due to the difficulties of hiring and training teachers all across the USA, it is unlikely that the College Board will change the language in the near future. The exam is 3 hours long, with 1.5 hours of multiple choice problems and 1.5 hours of “free response” (pen and pencil) programming. The exam continues to grow in popularity, with under 50,000 students participating in 2015 and over 70,000 participating in 2020. Although not all schools offer the class, students are free to take the test at any participating school (they must contact schools to be added to the exam roster), and there are over 5000 high schools that offered the exam in 2019.
The AP exams are also gaining popularity because they remain one of the few ways for students to prove their academic abilities. Indeed, 7 Ivy League schools are no longer requiring the SAT, and many systems like the University of California (including Berkeley) are scrapping not only SATs and ACTs but also SATII subject tests. Lengthy and protracted court cases across the US continue to spread, as anti-SAT activists paint them as biased against Black and Latino communities, while SAT proponents argue the removal of standardized testing allows for systemic racism against Asian American students. Nevertheless, the trend is clear, and students will have to rely more and more on APs and extra-curricular activities on their college applications. This means both the “AP CS A” will become more important along side other awards, portfolio projects, research projects, and other accomplishments.
2. Java gives students many options when it comes to competitions, hackathons, or independent projects
Students who know Java don’t have to worry about picking the ‘wrong’ language that prevents them from doing well in a contest. For example, there are standardized competitions, such as the USA Computing Olympiad (“USACO“), which shines along side similar national qualifying competitions like the USA Math Olympiad or USA Physics Olympiad. Both the USACO and similarly venerated ACSL accept Java, but the USACO specifically discourages languages such as Python as being too slow for some contest problems.
Similarly, students will find that Java works well as a language for making hackathon projects. Hackathons are often in-person events, where students may not have the fastest internet connection to access the best online tools. In these situations, compiled languages that have few online requirements (“dependencies”) perform well, and students can choose between a myriad of libraries for both very technical web servers, or highly interactive games.
The longevity of the language also makes it great for independent projects. Java is famous for being backwards compatible, meaning that projects written when a student is young will likely work when they later need to showcase it as part of their college applications or career. In an era where web frameworks change from year to year, and even older languages like python can be difficult when they change from one version to another — Java provides a solid foundation that students can draw on for all their clubs, internships, art projects, and fun personal applications.
3. Java can be a great gateway to more serious programming such as in games (Minecraft), phones (Android), or enterprise web sites.
Mobile computing has over taken desktop computers, and Java is the clear winner there too with Android. Depending on which study you trust, Android and its Java based app ecosystem holds 75-87% of the market share. So if your child wants to leverage their programming skills to make a phone or tablet application, Java is a good choice. Apple’s Objective-C language, in contrast, is rarely used in competitions, classes, or programming outside of Apple products.
Similarly, Java is the language that Minecraft modders use to customize the popular Minecraft game with. Needless to say, this is popular among kids. Of course, some game modding frameworks like Unity use C# (“C sharp”), which is not common among competitions or tests, and some use even more esoteric languages like Lua (very popular among gamers), but Java is one of the few that are suitable for a popular game as well as academic programming.
Lastly, Java is incredibly popular in the software industry, especially among big web companies such as Netflix, Amazon, and Google. Of course, these companies use many other languages as well, and so a student who wants to go into software engineering better learn several languages before they start their career. However, Java is common due to its popularity in web services and backend infrastructure. A common setup is to have a front end written in Javascript (e.g. React.js) and a backend written in Java (e.g. Spring).
4. Java can be extremely user friendly, especially when combined with student friendly libraries such as Processing
One of the most common complaints about Java is that it seems “complicated”, “verbose”, or “not user friendly”. Many of these stereotypes originate to the style that Java was often written in over a decade ago, and is no longer true today.
Indeed, Java can be integrated with libraries that aid users in simplifying graphics, game design, or many other things. One popular library is Processing (processing.org), where many students and educators around the world use it to create beautiful applications, such as on https://openprocessing.org/ . In fact, you can see hundreds of schools teaching kids computer science, art, design, and gaming today using Processing: https://openprocessing.org/classes/all . Similar libraries exist to help students with common tasks such as animation, physics, and data visualization: https://processing.org/reference/libraries/ . This is why at KTBYTE we have integrated our Java Processing editor into the web browser, so that students can program in seconds without having to download and install a software development environment on their computer. It allows students to make visually interactive applications in a few lines of code, even as a complete beginner.
This makes Java a surprisingly good choice when contrasted with languages like C or C++ (other fast languages that are popular in the USACO). In C++, it’s very difficult for students to write graphical programs, and often requires special software that is different on a Mac or PC. Thus, it’s hard to find another language like Java – one that can both perform at very high speed but also be so user friendly.
5. Java is a great way to learn concepts for other serious programming languages (Not only C++, Python, Javascript, PHP, etc, but also JVM languages Groovy, Scala, Kotlin, and Clojure)
Finally, it may surprise some students, but Java is part of an ecosystem of many programming languages, and the features of Java allow students to learn many more languages. Some of these features, such as object oriented programming, allow students to carry over the concepts when they learn C++, Python, etc. Even more surprising, is that some of the features allow Java to be written along side other languages in the same program, via the “JVM”. The JVM, Java Virtual Machine, is the technology that Java is based on, and students who write in languages such as Scala, Clojure, Kotlin, or Groovy, can run their code directly on the JVM. This allows students to be multilingual early on, as a computer setup to run Java can be easily setup to run any of these languages together.
—————-
Of course, all languages have their pros and cons, so let’s compare Java to some other specific languages to see where you might want to learn more than one language. Students at KTBYTE often find that once they have learned Java, they can learn Scratch, C++, Python, Javascript, or many others on their own.
First, there is Scratch, a purely education-purpose language. This language is a graphical drag-and-drop language for kids, and it is not used in professional programming environments. Many KTBYTE students learned scratch before starting at KTBYTE, and some will find the JavaBlocks interface we use for FUN1a/b and FUN2a/b students to be quite similar. However, in reality, JavaBlocks is just Java with training wheels, and students using JavaBlocks are exposed to professional language concepts such as variable types, runtime errors, recursion, and object oriented programming. These are not features available in Scratch. Nevertheless, Scratch is a great way for kids to be exposed to programming, and we encourage kids to try it out, especially if they have never coded before. Scratch is often the first programming language taught in public schools in the US, but students will benefit from a professional language when learning more complex algorithms and data-structures.
Secondly, there is C++, which is a “low level” programming language popular in robotics or micro-controller programming. C++ allow students to write code that directly interfaces with the hardware and CPU on the computer in a way that can be very fast but also error prone. C++ is therefore popular along side Java for competitions requiring very fast programs, but it is not popular for art, web, or simple graphical programs. Although professional game development companies use C++ for big games that need the fastest code for state-of-the-art graphics, most students will not be exposed to these types of projects. Instead, C++ (or its simpler cousin, C), are best for students when they program robotic systems with micro-controllers such as the Arduino, Raspberry PI, or other mini computers.
Thirdly, there is Python, which is famously popular for its libraries in data analysis and machine learning. Python has become the de-facto language for academic researchers who build artificial intelligence systems using Tensorflow and PyTorch. Python, in addition to Java, is also popular in University introduction-to-computer-science courses. Just like the Java Processing library, Python is easy to start building simple programs with. Unfortunately Python is discouraged by the USACO and not covered in the AP, but it serves as a great second language with broad popular appeal.
Fourthly, there is Javascript, the current king of web front-end programming. Every web browser app or interactive website uses some degree of javascript. Although its name is similar to Java, they are two completely different languages. Javascript is a great second language for students who want to build their own website or learn how other websites work. Among KTBYTE students, Javascript is the most popular second language, since it is required for many websites even if the backend is written in Java, Python, or PHP.
Lastly, the truth is there are hundreds of programming languages out there, and it can be quite overwhelming. Each language has its own niche, where students can find projects, libraries, and applications that are written in that language. Some of these features can make every language appealing for its own unique ecosystem. At KTBYTE, we encourage students to dabble and try all sorts of languages, but to focus on Java as their main ‘core’ language. This will allow them the best chance to perform in US pre-college activities and competitions, while allow them to explore the diversity that many languages can offer them. Some of our instructors love Kotlin, a JVM language, for its more modern features. Some love R for its statistical programming. Some love Bash for its integration with Linux. Some love PHP for its long history in web programming at Facebook and WordPress. In the end, programming languages are tools, and the knowledge of computer science allow students to master these tools even as they grow or wane in popularity. Our aim is to give students the skills to last for decades, regardless of what programming language they will use in the future.