{"id":6383,"date":"2015-08-24T16:15:53","date_gmt":"2015-08-24T13:15:53","guid":{"rendered":"http:\/\/www.webcodegeeks.com\/?p=6383"},"modified":"2015-08-17T02:11:51","modified_gmt":"2015-08-16T23:11:51","slug":"javascript-survival-tools-java-developer","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/","title":{"rendered":"JavaScript Survival Tools for the Java Developer"},"content":{"rendered":"<p>Although I&#8217;ve worked with JavaScript a bit here and there over the years, I have not used it as regularly or consistently as I&#8217;ve used Java. I have also not used it for anything nearly as complex as for what I&#8217;ve used Java. Therefore, it is not very surprising that moving from commonly used Java to seldom used JavaScript offers some <a href=\"http:\/\/blog.jhades.org\/javascript-for-java-developers\/\">pain points<\/a>. This post looks at some tools and techniques Java developers (and developers familiar with other class-based and statically typed languages) might find helpful in transitioning to JavaScript development.<\/p>\n<p><strong>Be Aware \/ Beware the JavaScript Gotchas: Helpful Online Resources<\/strong><\/p>\n<p>Every programming language has its share of <a href=\"https:\/\/github.com\/stevekwan\/best-practices\/blob\/master\/javascript\/gotchas.md\">gotchas<\/a>, <a href=\"http:\/\/blog.mdnbar.com\/javascript-for-java-developers\">sharp edges<\/a>, <a href=\"http:\/\/prasadhonrao.com\/top-10-javascript-traps-for-a-csharp-developer\/\">traps<\/a>, <a href=\"http:\/\/www.sitepoint.com\/three-javascript-quirks-java-c-developers-should-know\/\">quirks<\/a>, and <a href=\"http:\/\/codinginflipflops.com\/post\/9286014150\/tricky-javascript-2\">corners<\/a>, but it is difficult for me to think of a programming language (other than perhaps Perl) that has more of these in its fundamental design than JavaScript. The developer who is aware of these is likely still going to run into these occasionally, but awareness will help the developer reduce the number of times he or she falls into the traps.<\/p>\n<p>Given the importance of understanding these <a href=\"http:\/\/blog.jelastic.com\/2012\/08\/28\/why-java-developers-hate-javascript\/\">JavaScript nuances<\/a>, the first category of tools is online resources that provide warnings about these nuances and their effects. A good resource providing an overview of <a href=\"http:\/\/www.standardista.com\/javascript\/15-common-javascript-gotchas\/\">JavaScript Gotchas<\/a> is <a href=\"http:\/\/developer.telerik.com\/featured\/seven-javascript-quirks-i-wish-id-known-about\/\">Seven JavaScript Quirks I Wish I\u2019d Known About<\/a>. Other resources useful in getting familiar with <a href=\"http:\/\/softwareloop.com\/javascript-idioms-for-java-developers\/\">nuances<\/a> of JavaScript include <a href=\"http:\/\/blog.codacy.com\/2013\/12\/18\/short-guide-js-gotchas\/\">Short Guide to JavaScript Gotchas<\/a>, <a href=\"http:\/\/red-team-design.com\/beginner-javascript-gotchas\/\">A Beginner&#8217;s List of JavaScript Gotchas<\/a>, and <a href=\"http:\/\/stackoverflow.com\/questions\/2749952\/what-are-the-top-javascript-pitfalls\">What are the top JavaScript pitfalls?<\/a><\/p>\n<p>I have not read the book <a href=\"http:\/\/shop.oreilly.com\/product\/9780596517748.do\">JavaScript: The Good Parts<\/a>, but many Java developers who have written about their experiences with JavaScript have mentioned that this book has helped them to better understand how to properly use JavaScript.<\/p>\n<p>For me, the biggest (in terms of time spent) issues using JavaScript while using Java is the different handling of <a href=\"http:\/\/www.adequatelygood.com\/JavaScript-Scoping-and-Hoisting.html\">scope<\/a> (and related issues such as <a href=\"http:\/\/www.sitepoint.com\/demystifying-javascript-variable-scope-hoisting\/\">hoisting<\/a> and different meanings of <code>this<\/code> keyword that take <a href=\"http:\/\/javascriptissexy.com\/understand-javascripts-this-with-clarity-and-master-it\/\">40 minutes to explain<\/a> and <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Operators\/this\">differ depending on which mode is being used<\/a>). JavaScript&#8217;s scope rules are a bit complex (see <a href=\"http:\/\/stackoverflow.com\/questions\/500431\/what-is-the-scope-of-variables-in-javascript\/500459#500459\">this StackOverflow thread for a taste of how complex<\/a>), but boil down for me to essentially &quot;use var often,&quot; &quot;embrace functions for controlling scope,&quot; and &quot;braces don&#8217;t mean anything in specifying scope.&quot;<\/p>\n<p><strong>See Where You&#8217;re At with console.log<\/strong><\/p>\n<p>The ability to log an application&#8217;s state and a description of an application&#8217;s behavior is useful in programming and debugging in any programming language. Because JavaScript is a weakly and dynamically typed language, this ability to see what&#8217;s happening at runtime is even more significant in JavaScript where a compiler is not going to help find &quot;obvious&quot; typos and mismatched interfaces. In the old days, one was typically stuck with invoking <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Window\/alert\">alert()<\/a> to see these types of logging details. This approach lacked subtlety and placed a popup on the screen that the user clicked &quot;OK&quot; on to close. The advent of <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Console\/log\">console.log()<\/a> is a welcome addition to the JavaScript developer&#8217;s tool set.<\/p>\n<p>The biggest downside of console.log may be that it&#8217;s not part of the DOM or JavaScript standards. However, modern major browsers all seem to support it. For those worried about a target environment browser not supporting it, a <a href=\"http:\/\/stackoverflow.com\/a\/14469096\">fall-back to alert can be used<\/a>. The obvious advantage of console.log is that modern browsers support special windows or areas in the browser in which messages are logged rather than rendering a pop-up that requires user acknowledgement to close. For Java developers familiar with logging using <a href=\"http:\/\/logging.apache.org\/log4j\/2.x\/\">Log4j<\/a> or <a href=\"http:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/util\/logging\/package-summary.html\">java.util.logging<\/a>, console.log is much closer to what they&#8217;re used to than alert.<\/p>\n<p>It&#8217;s also worth mentioning here that non-standard <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Console\/dir\">console.dir<\/a> can be very handy, with its <a href=\"http:\/\/stackoverflow.com\/questions\/11954152\/whats-the-difference-between-console-dir-and-console-log\">advantages<\/a> being more obvious in certain browsers than others.<\/p>\n<p><strong>See Where You&#8217;ve Come From with console.trace<\/strong><\/p>\n<p>The non-standard <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Console\/trace\">console.trace<\/a> is similar to console.log in that it&#8217;s non-standard but supported by modern web browsers. What makes console.trace different than console.log is that console.trace logs the stack trace of the JavaScript execution at time of the logging invocation. This is similar to logging a thread&#8217;s current <a href=\"http:\/\/marxsoftware.blogspot.com\/2010\/10\/reading-java-stack-traces-few-tips.html\">stack trace in Java<\/a>.<\/p>\n<p><strong>Feel at Home with Constructor Functions<\/strong><\/p>\n<p>Java developers are comfortable working with objects. Although JavaScript&#8217;s object-orientation is prototype-based rather than class-based, the use of constructor functions makes <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Guide\/Working_with_Objects\">JavaScript objects<\/a> feel more like Java objects. I have discussed the use of constructor functions in greater depth in the post <a href=\"http:\/\/marxsoftware.blogspot.com\/2015\/05\/javascript-objects-from-java-developer.html\">JavaScript Objects from a Java Developer Perspective<\/a>. The book <a href=\"https:\/\/www.packtpub.com\/web-development\/object-oriented-javascript-second-edition\">Object-Oriented JavaScript<\/a> provides a thorough introduction to using JavaScript objects and I have <a href=\"http:\/\/marxsoftware.blogspot.com\/2015\/07\/book-review-object-oriented-javascript.html\">reviewed this book in an earlier post<\/a>.<\/p>\n<p><strong>Override JavaScript Objects&#8217; toString() Implementations<\/strong><\/p>\n<p>JavaScript, like Java, provides an implementation of <code>toString()<\/code> at its highest <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\">Object<\/a> level. All JavaScript objects automatically inherit that <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/toString\">toString()<\/a> implementation via <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/toString\">Object.prototype.toString()<\/a>. Like Java&#8217;s, the JavaScript <code>Object.toString()<\/code> provides only minor informative value. The <a href=\"http:\/\/marxsoftware.blogspot.com\/2010\/12\/java-tostring-considerations.html\">same advantages<\/a> that come from overriding Java class&#8217;s <a href=\"http:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/lang\/Object.html#toString--\">toString()<\/a> implementations apply when overriding JavaScript objects&#8217; <code>toString()<\/code> implementations. Overridden and customized JavaScript objects&#8217; <code>toString()<\/code> methods are especially helpful when used in conjunction with the just-discussed console.log.<\/p>\n<p>I have written about how to override JavaScript objects&#8217; <code>toString()<\/code> methods in the posts <a href=\"http:\/\/marxsoftware.blogspot.com\/2015\/05\/javascript-objects-from-java-developer.html\">JavaScript Objects from a Java Developer Perspective<\/a> and <a href=\"http:\/\/marxsoftware.blogspot.com\/2015\/05\/javascript-object-prototype.html\">A Java Developer&#8217;s Perspective on the Power and Danger of JavaScript&#8217;s Object Prototype<\/a>.<\/p>\n<p><strong>Enjoy Java&#8217;s Write-Once, Run Anywhere Paradigm in JavaScript<\/strong><\/p>\n<p>Although modern web browsers more consistently implement JavaScript features these days than they used to, there are seemingly countless frameworks available that abstract specifics of browsers&#8217; DOMs and other implementation specifics away from the developer. Arguably the most famous and most used of the JavaScript frameworks is <a href=\"https:\/\/jquery.com\/\">jQuery<\/a>. Most of the <a href=\"https:\/\/dzone.com\/articles\/javascript-java-developers\">Java developers<\/a> I know who spreak positively of JavaScript are developers who use a framework such as jQuery to abstract away their need to worry about DOM and other browser implementation nuances and idiosyncrasies.<\/p>\n<p>As I have revisited JavaScript development off and on over the years, I&#8217;ve been impressed with how much the frameworks have improved in recent years compared to the quality and dearth of them several years ago. jQuery was one of the first to really make a difference in JavaScript and several introduced since then have had similarly significant impacts. Java developers understand well the value of being able to write the same code once and have it work on multiple targeted environments.<\/p>\n<p>Another framework that has been popular of late, including among <a href=\"http:\/\/blog.jdriven.com\/2012\/10\/stop-hiding-from-javascript\/\">Java developers<\/a>, is <a href=\"https:\/\/angularjs.org\/\">AngularJS<\/a>.<\/p>\n<p><strong>IDE Familiarity Might Reduce Homesickness<\/strong><\/p>\n<p>A good IDE can be a valuable tool for anyone wanting to learn the basics of a new programming language. The many &quot;holy wars&quot; over which IDEs and text editors are best provide evidence that many developers prefer IDEs and text editors that they are used to using. Fortunately for Java developments, the dominant Java IDEs (<a href=\"https:\/\/netbeans.org\/kb\/docs\/webclient\/html5-js-support.html\">NetBeans<\/a>, <a href=\"https:\/\/www.jetbrains.com\/editors\/javascript_editor.jsp?ide=idea\">IntelliJ IDEA<\/a>, <a href=\"https:\/\/eclipse.org\/downloads\/packages\/eclipse-ide-javascript-web-developers\/indigosr2\">Eclipse<\/a>) provide JavaScript development support.<\/p>\n<p><strong>Play with JavaScript Using Java&#8217;s Implementation<\/strong><\/p>\n<p>The Oracle HotSpot JVM provides a <a href=\"http:\/\/www.oracle.com\/technetwork\/articles\/java\/jf14-nashorn-2126515.html\">JavaScript implementation<\/a>: <a href=\"http:\/\/docs.oracle.com\/javase\/7\/docs\/technotes\/guides\/scripting\/programmer_guide\/\">Rhino<\/a> before Java 8 and <a href=\"https:\/\/docs.oracle.com\/javase\/8\/docs\/technotes\/guides\/scripting\/nashorn\/api.html\">Nashorn<\/a> since <a href=\"http:\/\/www.infoq.com\/articles\/nashorn\">Java 8<\/a>.<\/p>\n<p><strong>Play with JavaScript with jsFiddle<\/strong><\/p>\n<p>If you read many <a href=\"http:\/\/stackoverflow.com\/questions\/tagged\/javascript\">StackOverflow answers tagged as JavaScript<\/a>, you&#8217;re likely to see people posting there mentioning that they had tested suggested implementations on <a href=\"https:\/\/jsfiddle.net\/\">jsFiddle<\/a>. This handy online tool allows developers to &quot;try out&quot; JavaScript to see how it performs without need to set up a browser or other environment.<\/p>\n<p><strong>Check JavaScript with JSLint<\/strong><\/p>\n<p>For Java developers used to the Java compiler catching all types of minor syntactic issues, JavaScript can sometimes seem too forgiving as it quietly doesn&#8217;t do what the developer is expecting because of some bad syntax. The online <a href=\"http:\/\/www.jslint.com\/\">JSLint<\/a> (The JavaScript Code Quality Tool) is very helpful in identifying JavaScript syntax issues. <a href=\"https:\/\/code.google.com\/p\/jslint4java\/\">jslint4java<\/a> is a Java wrapper for JSLint.<\/p>\n<p><strong>Debugging is Even More Helpful in JavaScript<\/strong><\/p>\n<p>The ability to debug code is important in any programming language, but it feels even more important in dynamically typed languages such as JavaScript where more errors are pushed to the runtime instead of being encountered earlier during compile time. There are several tools available for helping <a href=\"https:\/\/www.sitepen.com\/blog\/2008\/04\/03\/advanced-javascript-debugging-techniques\/\">debug JavaScript applications<\/a>. These include tools mentioned here such as jsFiddle, but also include browser-specific tools such as the famous and frequently used <a href=\"http:\/\/getfirebug.com\/javascript\">Firebug<\/a> and the browers&#8217; debugger implementations (<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Tools\/Debugger\">Firefox Debugger<\/a>, <a href=\"https:\/\/msdn.microsoft.com\/library\/bg182326(v=vs.85)\">Internet Explorer F12<\/a> <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/dn255007(v=vs.85).aspx\">debugger<\/a>, and <a href=\"https:\/\/developer.chrome.com\/devtools#debugging-javascript\">Chrome&#8217;s JavaScript Debugger<\/a>.<\/p>\n<p><strong>Use a Java-like Abstraction of JavaScript<\/strong><\/p>\n<p>For the developer who prefers static typing and some of the other advantages of Java and other languages, an approach to more comfortably &quot;writing JavaScript&quot; is to use a superset or abstraction of JavaScript with static characteristics. The idea of compiling from a more statically typed language into JavaScript is not new to Java developers as <a href=\"http:\/\/www.gwtproject.org\/\">Google Web Toolkit<\/a> (<a href=\"http:\/\/www.gwtproject.org\/doc\/latest\/tutorial\/\">GWT<\/a>) has done this for a long time. A newer implementation of this concept is provided as <a href=\"https:\/\/dukescript.com\/\">DukeScript<\/a>, which is <a href=\"https:\/\/dukescript.com\/index.html#about\">described<\/a> as a &quot;new technology for creating cross-platform mobile, desktop and web applications&quot; that &quot;are plain Java applications that internally use HTML5 technologies and JavaScript for rendering.&quot;<\/p>\n<p>Another option for those wishing to generate JavaScript while using constructs they are familiar with in Java is use of <a href=\"http:\/\/www.typescriptlang.org\/\">TypeScript<\/a>, &quot;a typed superset of JavaScript that compiles to plain JavaScript.&quot; <a href=\"http:\/\/eclipsesource.com\/blogs\/2014\/09\/24\/javascript-for-java-developers\/\">TypeScript<\/a> provides <a href=\"http:\/\/www.typescriptlang.org\/Handbook#type-compatibility\">stronger typing<\/a>, <a href=\"http:\/\/www.typescriptlang.org\/Handbook#classes\">classes<\/a>, <a href=\"http:\/\/www.typescriptlang.org\/Handbook#interfaces\">interfaces<\/a>, and other concepts that Java and C# developers are familiar and comfortable with. Many of us who use Java, C++, C#, and languages such as these have learned to love the advantages of strongly typed programming languages and TypeScript presents many of those advantages to us in JavaScript.<\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p>JavaScript has become a widely popular and ubiquitous programming language. In several ways, it is quite different from other popular programming languages such as Java and C#. Although experience in any one programming language is generally beneficial in learning a different programming language, there have actually been times that my &quot;thinking in Java&quot; has almost been a detriment when writing JavaScript due to some of the subtle (from a syntax perspective) but drastic (from a behavior perspective) differences in the two languages. This post has outlined some of the tools that I&#8217;ve found helpful for being more effective when developing JavaScript from a primarily Java background.<\/p>\n<p><\/p>\n<div class=\"attribution\">\n<table>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"http:\/\/marxsoftware.blogspot.com\/2015\/08\/javascript-survival-tools-for-java.html\">JavaScript Survival Tools for the Java Developer<\/a> from our <a href=\"http:\/\/www.webcodegeeks.com\/wcg\/\">WCG partner<\/a> Dustin Marx at the <a href=\"http:\/\/marxsoftware.blogspot.com\/\">Inspired by Actual Events <\/a> blog.<\/td>\n<\/tr>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Although I&#8217;ve worked with JavaScript a bit here and there over the years, I have not used it as regularly or consistently as I&#8217;ve used Java. I have also not used it for anything nearly as complex as for what I&#8217;ve used Java. Therefore, it is not very surprising that moving from commonly used Java &hellip;<\/p>\n","protected":false},"author":85,"featured_media":920,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[77],"class_list":["post-6383","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","tag-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JavaScript Survival Tools for the Java Developer - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"Although I&#039;ve worked with JavaScript a bit here and there over the years, I have not used it as regularly or consistently as I&#039;ve used Java. I have also\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript Survival Tools for the Java Developer - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"Although I&#039;ve worked with JavaScript a bit here and there over the years, I have not used it as regularly or consistently as I&#039;ve used Java. I have also\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2015-08-24T13:15:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Dustin Marx\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dustin Marx\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/\"},\"author\":{\"name\":\"Dustin Marx\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/822dd06522df2073b0366cf9716f56f2\"},\"headline\":\"JavaScript Survival Tools for the Java Developer\",\"datePublished\":\"2015-08-24T13:15:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/\"},\"wordCount\":1745,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"keywords\":[\"Java\"],\"articleSection\":[\"JavaScript\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/\",\"name\":\"JavaScript Survival Tools for the Java Developer - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"datePublished\":\"2015-08-24T13:15:53+00:00\",\"description\":\"Although I've worked with JavaScript a bit here and there over the years, I have not used it as regularly or consistently as I've used Java. I have also\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/javascript\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"JavaScript Survival Tools for the Java Developer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/822dd06522df2073b0366cf9716f56f2\",\"name\":\"Dustin Marx\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a11cce21db49686299ad9afde297b5213759b39e79a54820195cf16b842639c0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a11cce21db49686299ad9afde297b5213759b39e79a54820195cf16b842639c0?s=96&d=mm&r=g\",\"caption\":\"Dustin Marx\"},\"sameAs\":[\"http:\/\/marxsoftware.blogspot.com\/\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/dustin-marx\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JavaScript Survival Tools for the Java Developer - Web Code Geeks - 2026","description":"Although I've worked with JavaScript a bit here and there over the years, I have not used it as regularly or consistently as I've used Java. I have also","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/","og_locale":"en_US","og_type":"article","og_title":"JavaScript Survival Tools for the Java Developer - Web Code Geeks - 2026","og_description":"Although I've worked with JavaScript a bit here and there over the years, I have not used it as regularly or consistently as I've used Java. I have also","og_url":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2015-08-24T13:15:53+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","type":"image\/jpeg"}],"author":"Dustin Marx","twitter_card":"summary_large_image","twitter_creator":"@webcodegeeks","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Dustin Marx","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/"},"author":{"name":"Dustin Marx","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/822dd06522df2073b0366cf9716f56f2"},"headline":"JavaScript Survival Tools for the Java Developer","datePublished":"2015-08-24T13:15:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/"},"wordCount":1745,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","keywords":["Java"],"articleSection":["JavaScript"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/","url":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/","name":"JavaScript Survival Tools for the Java Developer - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","datePublished":"2015-08-24T13:15:53+00:00","description":"Although I've worked with JavaScript a bit here and there over the years, I have not used it as regularly or consistently as I've used Java. I have also","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/javascript\/javascript-survival-tools-java-developer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"JavaScript","item":"https:\/\/www.webcodegeeks.com\/category\/javascript\/"},{"@type":"ListItem","position":3,"name":"JavaScript Survival Tools for the Java Developer"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/822dd06522df2073b0366cf9716f56f2","name":"Dustin Marx","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a11cce21db49686299ad9afde297b5213759b39e79a54820195cf16b842639c0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a11cce21db49686299ad9afde297b5213759b39e79a54820195cf16b842639c0?s=96&d=mm&r=g","caption":"Dustin Marx"},"sameAs":["http:\/\/marxsoftware.blogspot.com\/"],"url":"https:\/\/www.webcodegeeks.com\/author\/dustin-marx\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/6383","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/85"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=6383"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/6383\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/920"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=6383"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=6383"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=6383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}