{"id":2742,"date":"2021-01-22T13:42:28","date_gmt":"2021-01-22T13:42:28","guid":{"rendered":"https:\/\/paycorp.io\/blog\/?p=2742"},"modified":"2024-05-30T10:52:27","modified_gmt":"2024-05-30T05:22:27","slug":"javas-secret-superpower","status":"publish","type":"post","link":"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/","title":{"rendered":"Java\u2019s Secret Superpower"},"content":{"rendered":"\n<p>Recently I had to do a thorough review of one of our very old products. A lot of the code was written over 10 years ago. Initially built with Apache Ant, it was one of our very first products to use Apache Maven as its build tool.<br>The most striking feature of the exercise was the comfort I felt with the project structure. This was a \u201cmulti-module Maven web application\u201d. What it meant is: I know where most of the files are going to be. If the application is using Hibernate, the \u201chbm\u201d files are probably in \u201csrc\/main\/resources\u201d and probably the same with Spring configuration or any other configuration files. The JSP pages will be somewhere in the src\/main\/webapp folder. The pom.xml will tell me every dependency this application has; where to find the code for previous releases etc. and all this, without even having to open the IDE or even knowing what the application is about.<br><br>There is no need to \u201cMigrate the project to the newer version of the IDE\u201d.<\/p>\n\n\n\n<p>In fact, there is no need to know which IDE was used to build this application or which IDE you want to use right now. You can do with just a command line terminal.<br><br>Build tools have existed from the first day we started to write programs but they have always been unopinionated. They would, well, just build! The organization of the project was up to the individual, corporate standards, best practices or the IDEs used. In the Java world, this role was performed by Apache Ant, a direct descendant of the venerable \u2018make\u2019 tool but without its idiosyncrasies. It is an imperative build tool that is driven by \u2018targets\u2019 defined in an xml file, but still with no opinion on how a Java project should be structured. Ant is undoubtedly powerful and still popular. As of the writing of this article, the latest release of Ant came out just last month. Yet, with all its capabilities, Ant is just another build tool like \u2018make\u2019.<br><br>Declarative and with an opinion about everything, Apache Maven is as \u201cun-make\u201d as it could be. It defined a standard directory layout \u2013 standard locations for most common artifacts used to build Java applications. It defined \u2018co-ordinates\u2019 to uniquely name components built using Maven. It defined dependency management using the \u2018co-ordinates\u2019, it defined repositories where the outputs can be stored and retrieved seamlessly and it defined a standard build lifecycle. Fortunately, Maven picked up the best practices from the hundreds of open source Apache Java projects and for most purposes the \u2018opinions\u2019 were just right. The net effect of all this standardization is that a developer from Coimbatore working on a web application using Eclipse can move to Cincinnati and be at home with a console application built using IntelliJ without skipping a beat. It also means that you can look at a 10-year-old code and still feel comfortable with it. Having a standard project layout is very helpful for individuals but the real kicker is the productivity boost the entire Java community gets because of the Maven coordinates \u2013 the ability for every organization to unambiguously share\/provide their artifacts to the community.<br><br>Maven gets a lot of criticism from the community; some of which, is justified. To truly appreciate what Maven brings to the table, you need to be a polyglot developer. Consider reviewing a 10 year old node or C\/C++ or C# program(s)!!! Or consider the tooling coming in new languages (say dotnet core), there is a hint of Maven everywhere. In today\u2019s world, any organization that is doing Java development and does not use Maven, is doing a great injustice to itself and the community as a whole \u2013 they are missing out on what truly is Java\u2019s secret super power.<\/p>\n\n\n\n<p>The author, Anish Thomas is Technical Director &amp; Chief Architect at Evolvus Solutions. He has over two decades of experience in setting up engineering processes and evaluating technology along with multi-industry product development experience spanning ERP, Healthcare and Banking products.&nbsp;At Evolvus, he is the final word for engineering management, product design, software architecture and tech coaching.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Revolutionize Digital Payments with <a href=\"https:\/\/www.paycorp.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Paycorp.io<\/a><\/strong><\/h2>\n\n\n\n<p>Make your digital payment platform fast, safe, and fool-proof with <a href=\"https:\/\/www.paycorp.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Paycorp.io<\/a>. We offer a diverse combination of cloud-based payment processing for <a href=\"https:\/\/www.paycorp.io\/ach-collections-repeat-recurring-payments-UPI-retail-mandate-esign-api-destination-banks-paper-mandate-banks-corporates-enterprise-solutions-for-banks.html\" target=\"_blank\" rel=\"noreferrer noopener\">various businesses<\/a>. Whether you are an <a href=\"https:\/\/www.paycorp.io\/SME-e-mandates-payments-processing-esign-erp-integrations-paper-receivables-UPI-API-SI-collections-automation-small-enterprise-payments.html\" target=\"_blank\" rel=\"noreferrer noopener\">SME<\/a>, a <a href=\"https:\/\/www.paycorp.io\/e-mandates-esign-bulk-processing-erp-integrations-paper-receivables-UPI-API-SI-collections-automation-large-enterprise-payments-solutions.html\" target=\"_blank\" rel=\"noreferrer noopener\">larger company<\/a>, or a <a href=\"https:\/\/www.paycorp.io\/customer-payments-repeat-collections-solutions-UPI-mandates-esign-automate-corporates-ach-aadhaar-netbanking-debitcard-authentication-api-digital-lenders.html\" target=\"_blank\" rel=\"noreferrer noopener\">digital lender<\/a>, we have a cloud-based, end-to-end payment solution for everyone. Frame your instructions, disburse and collect payments, realize revenue, and reconcile payments simply and efficiently with our robust payment solutions.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently I had to do a thorough review of one of our very old products. A lot of the code was written over 10 years ago. Initially built with Apache Ant, it was one of our very first products to use Apache Maven as its build tool.The most striking feature of the exercise was the comfort I felt with the&hellip;<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java\u2019s Secret Superpower - Paycorp<\/title>\n<meta name=\"description\" content=\"Paycorp Payments Collection Scheduling\u200b solutions in India.Ach solutions and recurring payments solutions companies in india.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java\u2019s Secret Superpower - Paycorp\" \/>\n<meta property=\"og:description\" content=\"Paycorp Payments Collection Scheduling\u200b solutions in India.Ach solutions and recurring payments solutions companies in india.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/\" \/>\n<meta property=\"og:site_name\" content=\"Paycorp\" \/>\n<meta property=\"article:published_time\" content=\"2021-01-22T13:42:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-30T05:22:27+00:00\" \/>\n<meta name=\"author\" content=\"Balaji Jagannathan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Balaji Jagannathan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/\"},\"author\":{\"name\":\"Balaji Jagannathan\",\"@id\":\"https:\/\/blog.paycorp.io\/#\/schema\/person\/c020f3fda2d4133c3cc696d25c033e25\"},\"headline\":\"Java\u2019s Secret Superpower\",\"datePublished\":\"2021-01-22T13:42:28+00:00\",\"dateModified\":\"2024-05-30T05:22:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/\"},\"wordCount\":770,\"publisher\":{\"@id\":\"https:\/\/blog.paycorp.io\/#organization\"},\"articleSection\":[\"Blogs\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/\",\"url\":\"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/\",\"name\":\"Java\u2019s Secret Superpower - Paycorp\",\"isPartOf\":{\"@id\":\"https:\/\/blog.paycorp.io\/#website\"},\"datePublished\":\"2021-01-22T13:42:28+00:00\",\"dateModified\":\"2024-05-30T05:22:27+00:00\",\"description\":\"Paycorp Payments Collection Scheduling\u200b solutions in India.Ach solutions and recurring payments solutions companies in india.\",\"breadcrumb\":{\"@id\":\"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.paycorp.io\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\u2019s Secret Superpower\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.paycorp.io\/#website\",\"url\":\"https:\/\/blog.paycorp.io\/\",\"name\":\"Paycorp\",\"description\":\"Recurring Payments Simplified\",\"publisher\":{\"@id\":\"https:\/\/blog.paycorp.io\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.paycorp.io\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blog.paycorp.io\/#organization\",\"name\":\"Paycorp\",\"url\":\"https:\/\/blog.paycorp.io\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.paycorp.io\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/paycorp.io\/blog\/wp-content\/uploads\/2020\/07\/cropped-logo-color.png\",\"contentUrl\":\"https:\/\/paycorp.io\/blog\/wp-content\/uploads\/2020\/07\/cropped-logo-color.png\",\"width\":942,\"height\":226,\"caption\":\"Paycorp\"},\"image\":{\"@id\":\"https:\/\/blog.paycorp.io\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.paycorp.io\/#\/schema\/person\/c020f3fda2d4133c3cc696d25c033e25\",\"name\":\"Balaji Jagannathan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.paycorp.io\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/28690862ee13cb1560d18261e0fab36d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/28690862ee13cb1560d18261e0fab36d?s=96&d=mm&r=g\",\"caption\":\"Balaji Jagannathan\"},\"description\":\"Balaji is the Board member of Paycorp Solutions and co-founder &amp; Chief Executive Officer of Evolvus Solutions Pvt Ltd. He plays a critical role in anchoring strategic priorities for the company to gain leadership position in the payments domain.\",\"url\":\"https:\/\/paycorp.io\/blog\/author\/shreya-d\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Java\u2019s Secret Superpower - Paycorp","description":"Paycorp Payments Collection Scheduling\u200b solutions in India.Ach solutions and recurring payments solutions companies in india.","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:\/\/paycorp.io\/blog\/javas-secret-superpower\/","og_locale":"en_US","og_type":"article","og_title":"Java\u2019s Secret Superpower - Paycorp","og_description":"Paycorp Payments Collection Scheduling\u200b solutions in India.Ach solutions and recurring payments solutions companies in india.","og_url":"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/","og_site_name":"Paycorp","article_published_time":"2021-01-22T13:42:28+00:00","article_modified_time":"2024-05-30T05:22:27+00:00","author":"Balaji Jagannathan","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Balaji Jagannathan","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/#article","isPartOf":{"@id":"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/"},"author":{"name":"Balaji Jagannathan","@id":"https:\/\/blog.paycorp.io\/#\/schema\/person\/c020f3fda2d4133c3cc696d25c033e25"},"headline":"Java\u2019s Secret Superpower","datePublished":"2021-01-22T13:42:28+00:00","dateModified":"2024-05-30T05:22:27+00:00","mainEntityOfPage":{"@id":"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/"},"wordCount":770,"publisher":{"@id":"https:\/\/blog.paycorp.io\/#organization"},"articleSection":["Blogs"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/","url":"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/","name":"Java\u2019s Secret Superpower - Paycorp","isPartOf":{"@id":"https:\/\/blog.paycorp.io\/#website"},"datePublished":"2021-01-22T13:42:28+00:00","dateModified":"2024-05-30T05:22:27+00:00","description":"Paycorp Payments Collection Scheduling\u200b solutions in India.Ach solutions and recurring payments solutions companies in india.","breadcrumb":{"@id":"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/paycorp.io\/blog\/javas-secret-superpower\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/paycorp.io\/blog\/javas-secret-superpower\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.paycorp.io\/"},{"@type":"ListItem","position":2,"name":"Java\u2019s Secret Superpower"}]},{"@type":"WebSite","@id":"https:\/\/blog.paycorp.io\/#website","url":"https:\/\/blog.paycorp.io\/","name":"Paycorp","description":"Recurring Payments Simplified","publisher":{"@id":"https:\/\/blog.paycorp.io\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.paycorp.io\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/blog.paycorp.io\/#organization","name":"Paycorp","url":"https:\/\/blog.paycorp.io\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.paycorp.io\/#\/schema\/logo\/image\/","url":"https:\/\/paycorp.io\/blog\/wp-content\/uploads\/2020\/07\/cropped-logo-color.png","contentUrl":"https:\/\/paycorp.io\/blog\/wp-content\/uploads\/2020\/07\/cropped-logo-color.png","width":942,"height":226,"caption":"Paycorp"},"image":{"@id":"https:\/\/blog.paycorp.io\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blog.paycorp.io\/#\/schema\/person\/c020f3fda2d4133c3cc696d25c033e25","name":"Balaji Jagannathan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.paycorp.io\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/28690862ee13cb1560d18261e0fab36d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/28690862ee13cb1560d18261e0fab36d?s=96&d=mm&r=g","caption":"Balaji Jagannathan"},"description":"Balaji is the Board member of Paycorp Solutions and co-founder &amp; Chief Executive Officer of Evolvus Solutions Pvt Ltd. He plays a critical role in anchoring strategic priorities for the company to gain leadership position in the payments domain.","url":"https:\/\/paycorp.io\/blog\/author\/shreya-d\/"}]}},"_links":{"self":[{"href":"https:\/\/paycorp.io\/blog\/wp-json\/wp\/v2\/posts\/2742"}],"collection":[{"href":"https:\/\/paycorp.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/paycorp.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/paycorp.io\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/paycorp.io\/blog\/wp-json\/wp\/v2\/comments?post=2742"}],"version-history":[{"count":4,"href":"https:\/\/paycorp.io\/blog\/wp-json\/wp\/v2\/posts\/2742\/revisions"}],"predecessor-version":[{"id":3214,"href":"https:\/\/paycorp.io\/blog\/wp-json\/wp\/v2\/posts\/2742\/revisions\/3214"}],"wp:attachment":[{"href":"https:\/\/paycorp.io\/blog\/wp-json\/wp\/v2\/media?parent=2742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/paycorp.io\/blog\/wp-json\/wp\/v2\/categories?post=2742"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/paycorp.io\/blog\/wp-json\/wp\/v2\/tags?post=2742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}