{"id":269,"date":"2021-01-03T20:24:37","date_gmt":"2021-01-03T20:24:37","guid":{"rendered":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/?page_id=269"},"modified":"2021-01-09T21:58:53","modified_gmt":"2021-01-09T21:58:53","slug":"the-java-sdk-software-development-kit-and-more-details","status":"publish","type":"page","link":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/course-topics\/the-java-sdk-software-development-kit-and-more-details\/","title":{"rendered":"The Java SDK and More Details"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a06f60d36917\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a06f60d36917\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/course-topics\/the-java-sdk-software-development-kit-and-more-details\/#Path_Classpath\" >Path &amp; Classpath<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/course-topics\/the-java-sdk-software-development-kit-and-more-details\/#PATH\" >PATH<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/course-topics\/the-java-sdk-software-development-kit-and-more-details\/#CLASSPATH\" >CLASSPATH<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/course-topics\/the-java-sdk-software-development-kit-and-more-details\/#Java_Filetypes\" >Java Filetypes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/course-topics\/the-java-sdk-software-development-kit-and-more-details\/#Using_the_Bare_SDK\" >Using the Bare SDK<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/course-topics\/the-java-sdk-software-development-kit-and-more-details\/#Compiling_a_Java_Source\" >Compiling a Java Source<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/course-topics\/the-java-sdk-software-development-kit-and-more-details\/#Running_a_Java_Application\" >Running a Java Application<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/course-topics\/the-java-sdk-software-development-kit-and-more-details\/#Running_a_Java_Applet\" >Running a Java Applet<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n<p>Even though you may not be using Sun&#8217;s bare Java SDK (Software Development Kit) directly, you are most likely using it under the covers.<\/p>\n\n\n\n<p>This means that you need to understand the basic principles behind the Sun Java SDK.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Path_Classpath\"><\/span>Path &amp; Classpath<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Easily the most troublesome areas you&#8217;ll encounter while developing in Java are&nbsp;<strong>PATH<\/strong>&nbsp;and (more likely)&nbsp;<strong>CLASSPATH<\/strong>&nbsp;problems.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"PATH\"><\/span>PATH<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Set the&nbsp;<strong>PATH&nbsp;<\/strong>environment variable to include the directory containing the Java SDK tools (the Java SDK&#8217;s&nbsp;<strong>\/bin<\/strong>&nbsp;subdirectory).<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"CLASSPATH\"><\/span>CLASSPATH<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Set the&nbsp;<strong>CLASSPATH<\/strong>&nbsp;environment variable to tell the various Java tools where to look for user-defined classes.<\/li><li>The entries should be&nbsp;<em>directories or ZIP files<\/em>&nbsp;that contain the classes.<\/li><li>On UNIX (<strong><em>colon ( <\/em><\/strong><strong><em>: ) <\/em><\/strong><strong><em>-separated<\/em><\/strong>):<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>setenv CLASSPATH .:\/home\/bryan\/classes:\/usr\/local\/javatools\/classes.zip<\/strong><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>On Windows (<strong><em>semicolon ( <\/em><\/strong><strong><em>; <\/em><\/strong><strong><em>) -separated<\/em><\/strong>):<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>set CLASSPATH=.;C:\\bryan\\classes;D:\\local\\javatools\\classes.zip<\/strong><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>You can specify an explicit class path to any of the Java utilities:<br><strong>java, javac, javadoc, javah<\/strong>, and&nbsp;<strong>javap<\/strong>:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>-classpath <\/strong><em><strong>path<\/strong><\/em><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Setting up&nbsp;<strong>CLASSPATH<\/strong>&nbsp;is often&nbsp;<em><strong>critical<\/strong><\/em>&nbsp;to getting things to work at all!<\/li><\/ul>\n\n\n\n<p>Note that if you use a Java IDE, it often removes most of the difficulties dealing with <strong>PATH<\/strong> and <strong>CLASSPATH<\/strong>.&nbsp; That alone is a good reason to use one!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Java_Filetypes\"><\/span>Java Filetypes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Here are the most commonly-used filetypes (a.k.a. file extensions) when dealing with Java:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Filetype<\/th><th class=\"has-text-align-left\" data-align=\"left\">Description<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\"><code><strong>.java<\/strong><\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">Java source file<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><code><strong>.class<\/strong><\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">bytecode file (&#8220;class&#8221; file)<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><code><strong>.zip<\/strong><\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">ZIP files containing&nbsp;<code><strong>.class<\/strong><\/code>&nbsp;(and other) files (do not UNZIP!)<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><code><strong>.jar<\/strong><\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">Java Archive files containing&nbsp;<code><strong>.class<\/strong><\/code>&nbsp;(and other) files (do not unjar!)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong><em><u>Note:<\/u><\/em><\/strong>&nbsp;Remember:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Long filenames\/filetypes are required!<\/li><li>Java is&nbsp;<em>case-sensitive<\/em>, including filenames!<\/li><\/ul>\n\n\n\n<div style=\"height:47px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Using_the_Bare_SDK\"><\/span>Using the Bare SDK<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>If you use only the bare Sun JDK, it&#8217;s very primitive, and you don&#8217;t get a visual debugger!<\/p>\n\n\n\n<p>It has the UNIX command line look and feel &#8212; tends to be user-hostile.<\/p>\n\n\n\n<p>You typically will want:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>a window for your editor<\/li><li>a window for the compiler (javac)<\/li><li>a window for the resulting program to run in.<\/li><li>maybe a window for the debugger.<\/li><li>probably one or two windows to browse the Java javadoc files<\/li><\/ul>\n\n\n\n<p>&#8230;and you are responsible for setting up <strong>PATH<\/strong> and <strong>CLASSPATH<\/strong>, and dealing with the details of each tool&#8217;s command line interface and options.&nbsp; Not for the faint of heart!<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Compiling_a_Java_Source\"><\/span>Compiling a Java Source<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>To compile a Java source file, you type the following to invoke the bare SDK Java compiler:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>javac HelloWorld.java <\/strong><\/pre>\n\n\n\n<p>(the&nbsp;<strong>.java<\/strong>&nbsp;filetype&nbsp;<em>is required<\/em>&nbsp;&#8212;&nbsp;<code>HelloWorld.java<\/code>&nbsp;refers to the&nbsp;<em>filename<\/em>)<\/p>\n\n\n\n<p>If successful, this produces a&nbsp;<code>HelloWorld.class<\/code>&nbsp;file from the&nbsp;<strong><code>HelloWorld.java<\/code><\/strong>&nbsp;file.<\/p>\n\n\n\n<p>The general syntax for invoking the javac compiler is:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>javac [ <em>options<\/em> ] [ <em>sourcefiles<\/em> ] [ @<em>files<\/em> ]<\/strong><\/pre>\n\n\n\n<p>where:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Command line parameter<\/th><th>Meaning<\/th><\/tr><\/thead><tbody><tr><td><code><strong><em>options<\/em><\/strong><\/code><\/td><td>Command-line options.<\/td><\/tr><tr><td><code><strong><em>sourcefiles<\/em><\/strong><\/code><\/td><td>One or more source files to be compiled (such as MyClass.java).<\/td><\/tr><tr><td><code><strong>@<em>files<\/em><\/strong><\/code><\/td><td>One or more files that list source files.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Options include (this is a subset of the full set of options;&nbsp; see the&nbsp;<a href=\"http:\/\/java.sun.com\/j2se\/1.3\/docs\/tooldocs\/tools.html\">Java 2 SDK Tools and Utilities documentation<\/a>&nbsp;for details):<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Option<\/th><th>Explanation<\/th><\/tr><\/thead><tbody><tr><td><code><strong>-classpath&nbsp;<\/strong><br><em><strong>path<\/strong><\/em><\/code><\/td><td>Sets the user class path, overriding the user class path in the&nbsp;<strong>CLASSPATH<\/strong>&nbsp;environment variable.&nbsp;<br>If neither&nbsp;<strong>CLASSPATH<\/strong>&nbsp;or&nbsp;<strong>-classpath<\/strong>&nbsp;is specified, the user class path consists of the current directory.<\/td><\/tr><tr><td><code><strong>-d&nbsp;<\/strong><em><strong>directory<\/strong><\/em><\/code><\/td><td>Sets the destination directory for class files. If a class is part of a package,&nbsp;<strong>javac<\/strong>&nbsp;puts the class file in a subdirectory reflecting the package name, creating directories as needed. For example, if you specify&nbsp;<strong>-d c:\\myclasses<\/strong>&nbsp;and the class is called&nbsp;<code>com.mypackage.MyClass<\/code>, then the class file is called&nbsp;<code>c:\\myclasses\\com\\mypackage\\MyClass.class<\/code>.&nbsp;<br>If&nbsp;<strong>-d<\/strong>&nbsp;is not specified,&nbsp;<strong>javac<\/strong>&nbsp;puts the class file in the same directory as the source file.<\/td><\/tr><tr><td><code><strong>-deprecation<\/strong><\/code><\/td><td>Shows a description of each use or override of a deprecated member or class. Without&nbsp;<strong>-deprecation<\/strong>,&nbsp;<strong>javac<\/strong>&nbsp;shows the names of source files that use or override deprecated members or classes.<\/td><\/tr><tr><td><code><strong>-g<\/strong><\/code><\/td><td>Generates all debugging information, including local variables. By default, only line number and source file information is generated.<\/td><\/tr><tr><td><code><strong>-sourcepath&nbsp;<\/strong><br><strong><em>sourcepath<\/em><\/strong><\/code><\/td><td>Specifies the source code path to search for class or interface definitions. As with the user class path, source path entries are separated by semicolons (<strong>;<\/strong>) and can be directories, JAR archives, or ZIP archives. If packages are used, the local path name within the directory or archive must reflect the package name.&nbsp;&nbsp;<br>Note that classes found through the classpath are subject to automatic recompilation if their sources are found.<\/td><\/tr><tr><td><code><strong>-verbose<\/strong><\/code><\/td><td>Verbose output. This includes information about each class loaded and each source file compiled.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Running_a_Java_Application\"><\/span>Running a Java Application<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>To run a Java Application using the Java Virtual Machine (JVM), you type something like the following, to invoke the bare SDK JVM (Java Virtual Machine, a.k.a. The Java Application Launcher):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>java HelloWorld<\/strong><\/pre>\n\n\n\n<p>(the&nbsp;<strong>.class<\/strong>&nbsp;is&nbsp;<em><u>not<\/u><\/em>&nbsp;allowed &#8212;&nbsp;<strong>HelloWorld&nbsp;<\/strong>refers to the&nbsp;<em>classname;<\/em>&nbsp; the JVM tries to find the specified class in the classpath.)<\/p>\n\n\n\n<p>This runs the&nbsp;<code><strong>HelloWorld<\/strong><\/code>&nbsp;class.<\/p>\n\n\n\n<p>The syntax for invoking the java application launcher (JVM) is:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>java [ <em>options<\/em> ] <em>class<\/em> [ <em>argument<\/em> ... ] \njava [ <em>options<\/em> ] -jar <em>jarfile<\/em> [ <em>argument<\/em> ... ] \njavaw [ <em>options<\/em> ] <em>class<\/em> [ <em>argument<\/em> ... ] \njavaw [ <em>options<\/em> ] -jar <em>jarfile<\/em> [ <em>argument<\/em> ... ]<\/strong><\/pre>\n\n\n\n<p>where:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Command line parameter<\/th><th>Meaning<\/th><\/tr><\/thead><tbody><tr><td><code><strong><em>options<\/em><\/strong><\/code><\/td><td>Command-line options.<\/td><\/tr><tr><td><code><strong><em>class<\/em><\/strong><\/code><\/td><td>Name of the class to be invoked.<\/td><\/tr><tr><td><code><strong><em>jarfile<\/em><\/strong><\/code><\/td><td>Name of the jar file to be invoked.&nbsp; Used only with the -jar option.<\/td><\/tr><tr><td><code><strong><em>argument<\/em><\/strong><\/code><\/td><td>Argument passed to the main function.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Options include (this is a subset of the full set of options;&nbsp; see the&nbsp;<a href=\"http:\/\/java.sun.com\/j2se\/1.3\/docs\/tooldocs\/tools.html\">Java 2 SDK Tools and Utilities documentation<\/a>&nbsp;for details):<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>Option<\/th><th>Explanation<\/th><\/tr><tr><td><code><strong>-classpath<\/strong>&nbsp;<br><em>classpath<br><\/em><strong>-cp<\/strong><\/code><br><code><em>classpath<\/em><\/code><\/td><td>Specify a list of directories, JAR archives, and ZIP archives to search for class files. Class path entries are separated by semicolons (<strong>;<\/strong>). Specifying&nbsp;<code><strong>-classpath<\/strong><\/code>&nbsp;or&nbsp;<code><strong>-cp<\/strong><\/code>&nbsp;overrides any setting of the&nbsp;<strong>CLASSPATH<\/strong>&nbsp;environment variable.&nbsp;&nbsp;<br>If&nbsp;<strong>-classpath<\/strong>&nbsp;and&nbsp;<strong>-cp<\/strong>&nbsp;are not used and&nbsp;<code><strong>CLASSPATH<\/strong><\/code>&nbsp;is not set, the user class path consists of the current directory (.).<\/td><\/tr><tr><td><code><strong>-D<em>property<\/em><\/strong><\/code><br><code><strong>=<em>value<\/em><\/strong><\/code><\/td><td>Sets a system property value. (Multiple such options may be specified.)<\/td><\/tr><tr><td><strong><code><strong>-verbose<\/strong><\/code><\/strong><\/td><td>Display information about each class loaded.<\/td><\/tr><tr><td><strong><code><strong>-version<\/strong><\/code><\/strong><\/td><td>Display version information and exit.<\/td><\/tr><tr><td><strong><code><strong>-?<br>-help<\/strong><\/code><\/strong><\/td><td>Display usage information and exit.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Running_a_Java_Applet\"><\/span>Running a Java Applet<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>To run a Java Applet from the bare SDK, type something like the following:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">appletviewer myHTMLfile.html<\/pre>\n\n\n\n<p>This reads or downloads an HTML document. It reads or downloads all the applets referenced in the document, and displays them, each in their own window. If the HTML document has no&nbsp;<code>&lt;APPLET&gt;<\/code>&nbsp;tag, it does nothing.<\/p>\n\n\n\n<p>The general form of the command is:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>appletviewer <em>url|file<\/em>...<\/strong><\/pre>\n\n\n\n<p>Applets run in this way may be controlled by menu-driven commands supplied in the appletviewer&#8217;s window.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Even though you may not be using Sun&#8217;s bare Java SDK (Software Development Kit) directly, you are most likely using it under the covers. This means that you need to understand the basic principles behind the Sun Java SDK. Path &amp; Classpath Easily the most troublesome areas you&#8217;ll encounter while developing in Java are&nbsp;PATH&nbsp;and (more [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":34,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_eb_attr":"","_uag_custom_page_level_css":"","ocean_post_layout":"left-sidebar","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"ocs-course-topics-sidebar","ocean_second_sidebar":"0","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"0","ocean_custom_header_template":"0","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"0","ocean_menu_typo_font_family":"0","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"0","footnotes":""},"class_list":["post-269","page","type-page","status-publish","hentry","entry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"ocean-thumb-m":false,"ocean-thumb-ml":false,"ocean-thumb-l":false},"uagb_author_info":{"display_name":"Bryan Higgs","author_link":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/author\/bryan\/"},"uagb_comment_info":0,"uagb_excerpt":"Even though you may not be using Sun&#8217;s bare Java SDK (Software Development Kit) directly, you are most likely using it under the covers. This means that you need to understand the basic principles behind the Sun Java SDK. Path &amp; Classpath Easily the most troublesome areas you&#8217;ll encounter while developing in Java are&nbsp;PATH&nbsp;and (more&hellip;","_links":{"self":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/pages\/269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/comments?post=269"}],"version-history":[{"count":15,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/pages\/269\/revisions"}],"predecessor-version":[{"id":608,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/pages\/269\/revisions\/608"}],"up":[{"embeddable":true,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/pages\/34"}],"wp:attachment":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/media?parent=269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}