Java programming is not hard to learn, but proficiency in the language takes time, effort, and a lot of practice. JShell can significantly reduce the time required to learn many of the core features of the Java programming language.
As a prototyping tool, JShell makes it easy to write and develop a code snippet without having to compile and run a complete program to test it.
What is JShell?
Java 9 witnessed the introduction of JShell, and it persists with the latest releases. It is a read-evaluate-print-loop (REPL) tool that can be used to write and execute Java code, load code from a file, save code snippets, and more, all using a simple command-line interface.
Learning Java using JShell
Learning Java using JShell, by Christoph Tornau (Packt Publishing), is an excellent introduction to the Java programming language using JShell and is especially suited for beginners. While it does not cover all the formalities of writing a full Java application, it does cover the fundamentals of the language itself including:
Data types: int, byte, double, float, String, char, and boolean.
Variables: Declaring variables.
Operators: Using logical, conditional, compound assignment and unary operators.
If and If-Else statements
Switch expressions: Note that switch expressions are a preview feature and are disabled by default. Run JShell with “–enable-preview” to enable switch expressions.
Loops: While, Do-While, For, and ForEach
Classes and Objects
Using JShell to teach the fundamentals of Java is a smart approach taken by Christoph. It eliminates the distractions of having to choose from a variety of editors or IDE’s (Interactive Development Environment) and provides a simple “clutter-free” means to focus on Java alone.
The video course is ideally suited for beginning Java programmers and serves as a soft introduction to using JShell with Java.
Interestingly, Learning Java using JShell does not spend much time covering many of the JShell commands and key combinations that make using it that much more effective. What follows is a brief introduction to JShell. I have also included some helpful links to additional articles and resources at the end of this post.
Java Version 9 or Later
To run JShell, you must have JDK9 or later installed on your computer. You can get the latest version of the JDK for your operating system from Oracle’s “Java SE Downloads” page.
You can check the installed version of Java by typing “java -version” at the command prompt in a terminal session as pictured below:
To run JShell on windows, start a terminal session by typing “cmd” in the search bar and click on the “Command Prompt – app.”
When the command prompt appears, type “jshell” and press enter. Some Java language features, such as switch expressions, are available in preview mode only and disabled by default. They can be enabled by typing “jshell –enable-preview” at the command prompt as pictured below:
You can set the feedback mode using the “/set feedback mode” command where the mode is replaced by either “verbose,” “normal,” “concise,” or “silent.” For example: “/set feedback silent” displays the absolute minimum amount of information. You can also use the /set command to create customized feedback and prompt settings.
For help on a specific command or subject, type /help followed by the command or subject of interest to you. For example, when you enter “/help /list” at the jshell prompt, the requested help information appears on the screen as pictured below:
The JShell commands available in version 12 as displayed on our system are as follows:
rerun snippets by ID or ID range — see /help rerun
rerun n-th previous snippet — see /help rerun
To learn more about a given subject, enter one of the subjects from the list below after the /help command. For example: /help intro
intro: an introduction to the JShell tool.
keys: a description of line editing support to navigate and edit snippets and commands.
id: a description of snippet IDs and how to use them
shortcuts: a description of keystrokes for snippet and command completion, information access, and automatic code generation
context: description of the evaluation context options for /env /reload and /reset
rerun: a description of ways to re-evaluate previously entered snippets
The “jshell>” prompt doesn’t offer help unless you ask for it. There is more to this seemingly “archaic” interface than first meets the eye. and it is worth taking the time to look further.
Why use JShell?
As a developer, it is convenient to test a snippet of code without having to formally compile and run it to see if it’s going to work. Working with APIs can also be a challenge. and JShell is a perfect environment to learn more about them.
JShell is even integrated into the JetBrains IntelliJ IDE so you can reap all the benefits and productivity gains it has to offer and makes knowing what JShell is and what it can do for you even more relevant.
Some seasoned Java programmers are not aware that JShell even exists. I can only stress the importance of staying current with updates when they occur as they usually introduce new features and ways to make writing code that much more efficient.
As I’ve said many times before, “There’s always a better way and more than one solution.” Learning Java using JShell by Christoph Tornau is yet another example of that.
Until Next Time – STAY lean!
Related Articles and Resources
Learning Java using JShell (Video 3 hours, 5 minutes), by Christoph Tornau (Packt Publishing, published 11-Oct-2019). ISBN: 9781839212239.
Ruby is a great language, especially for beginners. The syntax of Ruby is intuitive, easy to understand, and easy to get started. If you have no prior programming experience and 1 hour and 44 minutes of time you can learn Ruby.
Ruby Programming For Everyone by John Elder (Packt Publishing – ISBN 9781839211997) is a video training program designed to take you from the absolute basics to advanced Ruby programming techniques in less than 2 hours.
You will learn how to install Ruby on your computer and rapidly progress from the traditional “Hello World” program to more advanced Ruby programming techniques. Each video is short and concise, allowing you to learn at a pace that’s ideal for you.
Ruby is one of my favourite languages simply because it’s easy to get things done quickly. If you’ve never programmed before, or simply want to see what Ruby has to offer, Ruby Programming for Everyone is a great way to get started. You’ll be surprised how easy it can be.
Motion: Inefficient algorithms, poorly designed UI,
Over-processing: Unnecessary functions or capabilities. Deliver the solution requested per the scope of the application, no more, no less.
Transport: Movement of resources or data. Consider in memory processes versus disk intensive transactions, or client side versus server side data processing.
There is a notable difference between “sloppy programming” and clean code written by someone who knows better. Have you ever spent hours attempting to decipher someone’s code, or even your own? A clean, readable, and well documented file is much easier to work with and, more importantly, understandable.
5S Your Code
We can minimize some forms of waste by using a method known as 5S. IDE’s such as those offered by JetBrains, allow us to create a workspace for a given application, but we can extend this concept to each file or script too.
Sort (Seiri): Eliminate all unnecessary tools, functions, comments, and resources. Choose meaningful file and variable names to minimize tedious and redundant comments in your Code.
Set in Order (Seiton): Use an effective directory management strategy to organize all your files for quick and easy reference. Deploy an effective “Model, View, Controller” strategy when developing your applications. Restrict your functions to a single purpose to better enable re-usability.
Shine (Seiso): Set and follow standardized coding guidelines and naming conventions. Deploy rigorous version control standards.
Standardize (Seiketsu): Publish coding guidelines and maintain your Code accordingly.
Sustain (Shitsuke): Cascade requirements and communicate expectations throughout the organization. Continually review and update the guidelines accordingly.
5S is one of the fundamental elements of Kaizen and, when practiced regularly, helps to minimize the seven wastes, allowing you to work effectively and efficiently.
Updating software applications is a routine maintenance practice that many choose to ignore. While many of my applications are set to update automatically, I want to be sure they are current.
I prefer to update my core software packages manually and with good reason. Some updates can be “buggy” and blindly upgrading could shut an application or system down. Code that worked in one version may now refer to deprecated functions or features.
Integrated Development Environments or IDE’s and programming languages continue to evolve. Incorporating and taking advantage of new features and capabilities can make writing code that much more effective and efficient.
I use the suite of IDE’s by JetBrains and appreciate the value my subscription brings to make code that much easier to write and manage. Integrated version control is certainly one of the features that I have learned to depend on over the years.
Performing regular updates also makes it easier to keep up with changes as they occur as opposed to learning them in one sitting several releases later. There is always a risk to being on the cutting – or bleeding – edge of technology, but the rewards may be even greater.
I received my paperback copy of Microsoft Excel 2019 VBA and Macros, by Bill Jelen and Tracy Syrstad, on December 31, 2018. I finally managed to work my way through it cover to cover and highly recommend this book for anyone wanting to learn how to be more productive with Excel using VBA.
This book presents a wide range of topics where you will learn how to take advantage of VBA and the new features available in Excel 2019. With the assumption that you already know how to use Excel, this book helps you to understand and take advantage of the many capabilities and features of VBA itself to enhance your experience as a user and to create effective and efficient applications.
If you want to increase your productivity with Excel 2019, then I highly recommend getting your copy of Microsoft Excel 2019 VBA and Macros. This is another welcome addition to our growing library of Excel books.
Accompanying Excel workbooks with code, data sets, and bonus macros are available online for download.
With the recent release of Java Development Kit 12 (JDK 12), it’s time to upgrade to JavaFX-12.0.1 as well. JavaFX is now managed and released as it’s own independent entity and is not shipped as part of the Java Development Kit.
If you are new to Java and JavaFX, visit Getting Started with JavaFX 12 to install and test the latest version of JavaFX. Instructions are presented for use with Linux/Mac and Windows.
If you already have Java 12 installed, download the JavaFX runtime, unzip the file to your location of choice, and add the PATH_TO_FX environment variable: set PATH_TO_FX=”path\to\javafx-sdk-12\lib”
Now you’re ready to test the installation using the HelloFX.java sample which is available for download from GitHub.
From the command line, use javac to compile the program as follows:
If all went as planned, running the program should produce a window as pictured below:
Every book, online tutorial, or course typically begin with writing programs that run on the console or terminal. An initial frustration for new users is that Interactive Development Environments or IDE’s such as Eclipse, NetBeans, or Visual Studio Code all use a Graphical User Interface or GUI interface and leaves us wondering why we can’t do graphics.
Of course, the books and tutorials do eventually address GUI’s; however, the subject of GUI’s is a topic for later chapters or course segments. Since JavaFX is not part of the JDK distribution, you must download it separately.
When I learned to program, hardware and storage were scarce. It is imperative for the code to be tight and the speed of execution is and remains a first and foremost concern. Achieving this isn’t always easy and often requires some very sophisticated programming techniques.
If there was ever a time or place to demand comments, a clever or complicated code sequence is it. Many books and courses will tell you to comment on your code and many experienced programmers do an excellent job of doing so. Writing clear and useful comments is as much a skill as it is a discipline.
The coding style where indentation, line length (80 characters maximum), avoiding the use of global variables and writing single purpose functions also help to understand and debug the code. Make your comments relevant and don’t restate what should already be clear.
Some will argue that good well-written code is self-documenting although my experience strongly suggests otherwise. Well-worded variable names are helpful; however, their intended purpose may not always be clear. Functions, subroutines, or classes may also have well-defined names yet arguments and/or parameters and results may not be.
I recently found myself having to debug a program I wrote over a year ago. The application was working on all machines but one. I learned that the client replaced the computer with an old legacy system. Fortunately, I have been working with PC’s for more years than I care to admit and understand what was happening and why.
Needless to say, were it not for the comments, fixing the issue in the actual code would’ve been a daunting task otherwise. The very sections of code that were to occupy my time were cause for previous visits. The comments clearly describe what the code sequence is supposed to do and the potential caveats to avoid.
Good Meaningful Comments
All of my code modules have an opening comment block that, aside from the author(s), date created, purpose, and revision, provide specific details regarding the methods/techniques and how they are used in the code to follow. Even the method of versioning the module is clearly outlined.
Complete history with version/revision number, date, and description of the changes accompanies the opening block. The specific changes are dated and documented in the revised code segments as well. Dating the changes in my code serves as a frame of reference and allows me to better recall the events that triggered the changes in the first place.
System.out.println(“Don’t use block comments to block out code\n”);
Rule of Thumb
A good “rule of thumb” is to provide sufficient comments to reteach yourself or to teach others what the code is supposed to do. I also provide ample warnings and advise of possible side effects that code changes may introduce.
If there is ever a place to serve yourself best in your coding skills, it’s in the comments. Everything that appears fresh today will be everything but fresh a year from now. A well-documented program requires focus and discipline, but the effort will make the debugging process so much easier when you visit your work in the near or distant future.
Microsoft’s DoWhy Library for Python greatly simplifies the task of estimating causal effects. If you or someone you know is involved in data analysis, it is worth your while to see what DoWhy can do for you.
I have spent a little time working with the library and although I have no coding examples at this time, the powerful nature of this library prevents me from waiting to share it.
Visit the DoWhy github page for more details on the DoWhy library. The information and documentation presented on the site provide sufficient detail to download and start working with the DoWhy library.