{"id":85,"date":"2016-10-19T22:02:30","date_gmt":"2016-10-19T22:02:30","guid":{"rendered":"http:\/\/www.mbarsinai.com\/blog\/?p=85"},"modified":"2016-10-20T04:53:14","modified_gmt":"2016-10-20T04:53:14","slug":"my-netbeans-favorite-five","status":"publish","type":"post","link":"https:\/\/www.mbarsinai.com\/blog\/2016\/10\/19\/my-netbeans-favorite-five\/","title":{"rendered":"My NetBeans Favorite Five"},"content":{"rendered":"<p>NetBeans 8.2 <a href=\"https:\/\/netbeans.org\/community\/releases\/82\/\">is out<\/a>, multiple cursors and all, so it&#8217;s a fitting occasion to post\u00a0my five favorite features. First, some background to avoid making a just-downloaded-an-went-a-bloggin&#8217; impression: I&#8217;ve been working daily with NetBeans since version 6 (so this post has been brewing for a while). I mostly work with Java (core, Java EE and some Swing) and with\u00a0HTML\/Javascript. I&#8217;ve also used NetBeans for Markdown, Scala, PlantUml, Sphinx, Python, Ruby, and making coffee. OK, forget the Ruby part.<\/p>\n<p>When joining the data science team at the <a href=\"http:\/\/www.iq.harvard.edu\/data-science\">Institute of Quantitative Social Science<\/a> at Harvard, I was happy to see they were using NetBeans as well. <a href=\"http:\/\/dataverse.org\">Dataverse<\/a>, our institutional data repository system, is based on Java EE and is <a href=\"http:\/\/guides.dataverse.org\/en\/4.5.1\/developers\/dev-environment.html#netbeans\">developed with NetBeans<\/a>. It&#8217;s currently more than 97K lines of <a href=\"https:\/\/github.com\/iqss\/dataverse\">open-source<\/a> code*. So you can see I have some milage using this tool.<\/p>\n<p>BTW, I&#8217;ve worked with the common alternatives (both paid and free) but somehow I always come\u00a0back to NetBeans. I guess I just don&#8217;t like my code being eclipsed.<\/p>\n<p>OK, OK, no need to throw a <code>BadPunException<\/code>. Let&#8217;s get to it:<\/p>\n<p><strong>Little Comforts\/Going the Extra Mile<\/strong><\/p>\n<p>Such as the suggested variable names, auto-pasting traces to the stack trace analyzer, the fact that the stack trace analyzer exists, &#8220;view differences&#8221; in the Unit testing result pane, <code>get<\/code> + <kbd>code-completion<\/kbd> generates the proper getter (there&#8217;s also a setter, of course).<br \/>\nAnd then there are the top-of-block popup and the file-too-long label. Love these.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.mbarsinai.com\/blog\/wp-content\/uploads\/2016\/10\/top-of-block.jpg\"><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-86\" src=\"https:\/\/i0.wp.com\/www.mbarsinai.com\/blog\/wp-content\/uploads\/2016\/10\/top-of-block.jpg?resize=279%2C300\" alt=\"top-of-block\" width=\"279\" height=\"300\" srcset=\"https:\/\/i0.wp.com\/www.mbarsinai.com\/blog\/wp-content\/uploads\/2016\/10\/top-of-block.jpg?resize=279%2C300&amp;ssl=1 279w, https:\/\/i0.wp.com\/www.mbarsinai.com\/blog\/wp-content\/uploads\/2016\/10\/top-of-block.jpg?w=662&amp;ssl=1 662w\" sizes=\"auto, (max-width: 279px) 100vw, 279px\" \/><\/a> <a href=\"https:\/\/i0.wp.com\/www.mbarsinai.com\/blog\/wp-content\/uploads\/2016\/10\/Extended-label.jpg\"><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-87\" src=\"https:\/\/i0.wp.com\/www.mbarsinai.com\/blog\/wp-content\/uploads\/2016\/10\/Extended-label.jpg?resize=227%2C300\" alt=\"extended-label\" width=\"227\" height=\"300\" srcset=\"https:\/\/i0.wp.com\/www.mbarsinai.com\/blog\/wp-content\/uploads\/2016\/10\/Extended-label.jpg?resize=227%2C300&amp;ssl=1 227w, https:\/\/i0.wp.com\/www.mbarsinai.com\/blog\/wp-content\/uploads\/2016\/10\/Extended-label.jpg?w=468&amp;ssl=1 468w\" sizes=\"auto, (max-width: 227px) 100vw, 227px\" \/><\/a><\/p>\n<p>Additionally, NetBeans\u00a0includes the required\u00a0stuff out of the proverbial box.<strong>\u00a0<\/strong>JUnit, Git etc. No need to install manually and decide between various conflicting versions of third party plugins.<\/p>\n<p><strong>Project Groups<\/strong><\/p>\n<p>Switch quickly between groups of projects. Or, really, working contexts. Since I have a few separate contexts I&#8217;m working on in parallel, this feature is a huge timesaver.<\/p>\n<p><strong>Great Java (+EE) and Javascript Support<\/strong><\/p>\n<p>Great language support for Java (including the next version). Very good\u00a0Javascript support as well. The code warnings are useful, and the &#8220;convert to functional operation&#8221; refactoring had taught me some new Java 8 features I was not aware of.<\/p>\n<p>Good support for\u00a0Java EE features, such as integration and plugins (JPQ modeler etc.). Integration with application servers etc. is easy. There&#8217;s also Docker integration, I hear. I&#8217;m not using Docker currently. I hope I can still keep my developer license.<\/p>\n<p><strong>Not reinventing the wheel<\/strong><\/p>\n<p>For example, using Apace ant at the core of the native project type make these projects useful outside of NetBeans too (an anti-vendor-lock-in vendor!).<\/p>\n<p><strong>It Just Works<\/strong><\/p>\n<p>It does. Srsly. It&#8217;s a very dependable tool. And I&#8217;m looking forward to seeing it graduating from its Apache incubator.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>* \u00a0Count\u00a0generated using David A. Wheeler&#8217;s &#8216;SLOCCount&#8217;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>NetBeans 8.2 is out, multiple cursors and all, so it&#8217;s a fitting occasion to post\u00a0my five favorite features. First, some background to avoid making a just-downloaded-an-went-a-bloggin&#8217; impression: I&#8217;ve been working daily with NetBeans since version 6 (so this post has been brewing for a while). I mostly work with Java (core, Java EE and some [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-85","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3NnQg-1n","_links":{"self":[{"href":"https:\/\/www.mbarsinai.com\/blog\/wp-json\/wp\/v2\/posts\/85","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mbarsinai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mbarsinai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mbarsinai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mbarsinai.com\/blog\/wp-json\/wp\/v2\/comments?post=85"}],"version-history":[{"count":3,"href":"https:\/\/www.mbarsinai.com\/blog\/wp-json\/wp\/v2\/posts\/85\/revisions"}],"predecessor-version":[{"id":90,"href":"https:\/\/www.mbarsinai.com\/blog\/wp-json\/wp\/v2\/posts\/85\/revisions\/90"}],"wp:attachment":[{"href":"https:\/\/www.mbarsinai.com\/blog\/wp-json\/wp\/v2\/media?parent=85"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mbarsinai.com\/blog\/wp-json\/wp\/v2\/categories?post=85"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mbarsinai.com\/blog\/wp-json\/wp\/v2\/tags?post=85"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}