tag:blogger.com,1999:blog-57632682339149706212024-03-29T08:58:38.134+05:30Tirthal's Tech Cafe - Java Platform and Software Engineering related blogs and articlesThis blog site is aimed to share simple and efficient approaches of learning and working in Java space & contribute my knowledge for the benefit of others in software engineering with respect to range of tools, techniques, practices, technologies, frameworks, design and architecture.Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.comBlogger51125tag:blogger.com,1999:blog-5763268233914970621.post-73171160898135481042019-05-05T16:20:00.000+05:302019-05-05T16:21:10.384+05:30Java 9, 10, 11 - Highlights of new features and enhancements<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div style="margin: 0in; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you are new to
Java, please refer my <a href="http://tirthalpatel.blogspot.in/2014/05/new-to-java-getting-started-guide.html" target="_blank">Newto Java - Getting Started Guide</a> post and previous post about <a href="http://tirthalpatel.blogspot.in/2015/08/java8-highlights-of-new-features-and-enhancements.html" target="_blank">Java8 - Highlights of new features and enhancements</a>?</span></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div style="margin: 0in; text-align: left;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">This could be one of my shortest blog ever! This just
contains URLs for sample code snippet (along with easy to understand comments)
to learn new features and enhancements of Java 9, Java 10 and Java 11 at my Learning-Java Repository on Github
@<span style="mso-spacerun: yes;"> </span></span></span></div>
<div style="text-align: left;">
</div>
<ul style="margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold;">Java 9</span> - <a href="https://github.com/tirthalpatel/Learning-Java/tree/master/Java9" target="_blank">https://github.com/tirthalpatel/Learning-Java/tree/master/Java9 </a></span></li>
</ul>
<ul style="margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold;">Java 10</span> - <a href="https://github.com/tirthalpatel/Learning-Java/tree/master/Java10" target="_blank">https://github.com/tirthalpatel/Learning-Java/tree/master/Java10 </a></span></li>
</ul>
<ul style="margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold;">Java 11 - </span><a href="https://github.com/tirthalpatel/Learning-Java/tree/master/Java11" target="_blank">https://github.com/tirthalpatel/Learning-Java/tree/master/Java11</a></span></li>
</ul>
<br />
<br /></div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com2tag:blogger.com,1999:blog-5763268233914970621.post-20917287733357290662018-04-08T22:15:00.000+05:302018-04-08T22:17:04.470+05:30Microservices with Spring Cloud - Learn by plain-vanilla code snippet<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: arial, helvetica, sans-serif;">Are you looking for
plain-vanilla code with lucid README instructions to learn Spring Cloud
technology stack?</span><br />
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Well, I had
explored, experimented and experienced building microservices using Spring
Cloud almost a year ago. I may upgrade my Spring Cloud learning code to match
latest version and include more features of it in this year.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Meanwhile if anyone
is interested in below learning goals, the code is available @ <a href="https://github.com/tirthalpatel/Learning-Spring/tree/master/gs-spring-cloud/gs-microservices">https://github.com/tirthalpatel/Learning-Spring/tree/master/gs-spring-cloud/gs-microservices</a></span></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPlO3v48nI6gLUUnkzGvNpbvpDzY7mWcMvdZwwBKqlTqFbjrzxq3kEzzCGiSrHRnq9TeEmcpCg1Bo5RE0-t9Fu3HvdHGmwgX-dRqh0rYICBDc5DIOhVFCxs0-k52JOfuUWAFEIUur5EugH/s1600/Microservices-with-Spring-Cloud-1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="853" data-original-width="985" height="553" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPlO3v48nI6gLUUnkzGvNpbvpDzY7mWcMvdZwwBKqlTqFbjrzxq3kEzzCGiSrHRnq9TeEmcpCg1Bo5RE0-t9Fu3HvdHGmwgX-dRqh0rYICBDc5DIOhVFCxs0-k52JOfuUWAFEIUur5EugH/s640/Microservices-with-Spring-Cloud-1.png" width="640" /></a></div>
<div style="margin-left: .375in; margin: 0in;">
</div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoNmw3QjdWMAeBJSC-LkCy9TzFdX4osMxr8Qyx2Bhv-vHwRThKnioJby3-4V1SZbMeG_TLEVWQxvHNDfr91IGzgNN6OmheTnkqtHionMZrgC9eUmZUg-F35KYw8ug0olsnUV_ygciaQyCY/s1600/Microservices-with-Spring-Cloud-2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="829" data-original-width="893" height="594" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoNmw3QjdWMAeBJSC-LkCy9TzFdX4osMxr8Qyx2Bhv-vHwRThKnioJby3-4V1SZbMeG_TLEVWQxvHNDfr91IGzgNN6OmheTnkqtHionMZrgC9eUmZUg-F35KYw8ug0olsnUV_ygciaQyCY/s640/Microservices-with-Spring-Cloud-2.png" width="640" /></a></div>
<div style="margin-left: .375in; margin: 0in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiJOnAr9v7zsGpFOwyYfufUy6PNmcoifi9dG-sgXf5emgFgjaTCwHZOa8ezakXlB6pBo8DMWjx0op9ujMtK0e6O2b-XlWwZMYpX0JzfrngXStXptvFo79RlHJ99NKccN4E3c34UkE5quWv/s1600/Microservices-with-Spring-Cloud-3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1122" data-original-width="890" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiJOnAr9v7zsGpFOwyYfufUy6PNmcoifi9dG-sgXf5emgFgjaTCwHZOa8ezakXlB6pBo8DMWjx0op9ujMtK0e6O2b-XlWwZMYpX0JzfrngXStXptvFo79RlHJ99NKccN4E3c34UkE5quWv/s640/Microservices-with-Spring-Cloud-3.png" width="506" /></a></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<br /></div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com9tag:blogger.com,1999:blog-5763268233914970621.post-69509871385676690992017-07-08T17:01:00.000+05:302017-07-08T17:03:21.903+05:30Spring Boot - Learning made easy by simple application<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="margin-bottom: 12pt; margin-top: 0pt;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">I hope, below mentioned plain-vanilla application would help you
to quickly get started with Spring Boot and few supporting technologies/tools.
Additionally, you may experiment Docker, Docker Compose and Pivotal Cloud
Foundry, if not yet!</span></div>
<div style="margin-bottom: 12pt; margin-top: 0pt;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #24292e;">I am not writing step by step instructions again here,
because README talks a lot @ </span><a href="https://github.com/tirthalpatel/Learning-Spring/tree/master/gs-spring-boot/gs-spring-boot-app" rel="nofollow" target="_blank">https://github.com/tirthalpatel/Learning-Spring/tree/master/gs-spring-boot/gs-spring-boot-app</a></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicnuIhe-ahVOg7xd0g6kpXtTnurPtM7iobGTcgTuA5llXeOAx7tJkJ_51nxUo6zaaKM9WVTmCumIkG6o7uLLx_B_N602U0mhvY0zyXHg3cPSd8SAZ0K2CPDxAXDmIvKAxXmaWzRsMDvTKL/s1600/Getting-Started-Spring-Boot-App.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><img border="0" data-original-height="1126" data-original-width="772" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicnuIhe-ahVOg7xd0g6kpXtTnurPtM7iobGTcgTuA5llXeOAx7tJkJ_51nxUo6zaaKM9WVTmCumIkG6o7uLLx_B_N602U0mhvY0zyXHg3cPSd8SAZ0K2CPDxAXDmIvKAxXmaWzRsMDvTKL/s640/Getting-Started-Spring-Boot-App.png" width="438" /></span></a></div>
<div style="margin-left: .375in; margin: 0in;">
</div>
<div style="color: #24292e; margin-bottom: 12pt; margin-top: 0pt;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div style="margin: 0in;">
<span style="text-decoration-line: underline;"><span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Learning Objectives</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Try following with
Spring Boot & run app by deploying on local machine / using docker compose
/ using docker / to pivotal cloud foundry.</span></div>
<ul style="text-align: left;">
<li>Spring Boot + Spring Web (MVC
and REST) + Thymeleaf (Template engine)</li>
<li>Spring Boot + Swagger UI (easily visualize and interact with the API’s resources)</li>
<li>Spring Boot + Properties
customization</li>
<li>Spring Boot + Spring Data JPA
+ H2 Database + FlywayDB (deal with RDBMS)</li>
<li>Spring Boot + Spring Data
REST + HAL browser (easy
to build hypermedia-driven REST web services)</li>
<li>Spring Boot + Spring Data
Redis (publish and subscribe to messages sent via Redis)</li>
<li>Spring Boot +
Production-ready features of Spring Boot Actuator</li>
<li>Spring Boot + Hawtio (a
lightweight web console to monitor and manage application)</li>
<li>Spring Boot + Developer Tools
(for automatic restart, livereload support..)</li>
<li>Spring Boot + Lombok (a java
annotation library to reduce boilerplate code)</li>
<li>Spring Boot + Testing (JUnit,
Hemcrest, AssertJ, Mockito, Spring Test)</li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
<div style="color: #24292e; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="margin: 0in;">
<span style="text-decoration-line: underline;"><span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif; font-size: large;">How to run the application?</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Refer README for
instructions to build, deploy and run application using below options. You must
need Redis server for option 1, 2 and 3. For option 4, you don't need to set up
Redis explicitly, as you can leverage Redis service from Pivotal CF marketplace.</span></div>
<ol style="text-align: left;">
<li>Using
maven on local machine</li>
<li>Using Docker Compose</li>
<li>Using Docker</li>
<li>Deploying to Pivotal Cloud
Foundry (Cloud PaaS)</li>
</ol>
<ol style="direction: ltr; margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="1">
</ol>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com2tag:blogger.com,1999:blog-5763268233914970621.post-38233665197848125792017-06-11T15:38:00.000+05:302017-06-11T15:38:18.788+05:30Java power tools series - Executive diagram<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
I hope, you have
already read "<a href="http://tirthalpatel.blogspot.com/2013/12/java-power-tools-series-preface.html" target="_blank">Preface</a>"
of my java power tools series. </div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
In this blog, I just
thought to publish my one of old mind mapping diagrams (not updated in last 2
years). I think, following java tools classification view should be effective
and useful to others' for quick reference.</div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in; text-align: center;">
(Right
click the image - Open in New Window - Zoom it)</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhijUyF4fbsWk8f6kjF4Twzb4oAo5Q995Rhwr7YHF_koquWw4jsA9roY3YO3TowWm3NRXonN4siBxnIhsDQtrmONeM6WA8tGxopWBBCF4dsCpHvo0fdwFTvSPayoE6BaHM7n473Xbn0nSyD/s1600/JavaPowerTools-ExecutiveDiagram.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="921" data-original-width="1271" height="460" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhijUyF4fbsWk8f6kjF4Twzb4oAo5Q995Rhwr7YHF_koquWw4jsA9roY3YO3TowWm3NRXonN4siBxnIhsDQtrmONeM6WA8tGxopWBBCF4dsCpHvo0fdwFTvSPayoE6BaHM7n473Xbn0nSyD/s640/JavaPowerTools-ExecutiveDiagram.png" width="640" /></a></div>
<div style="margin: 0in;">
<br /></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
Please share your
experience in comment, if you have something to add / update with respect to
following outlined java tools blueprint.</div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div style="font-family: Calibri; font-size: 14.0pt; margin: 0in;">
<span style="font-weight: bold; text-decoration-line: underline;">Disclaimer</span></div>
<br />
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
I am not biased to
particular free or commercial tools, rather my objective is about sharing my
own experience on set of tools. </div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-65328547116748019182017-04-30T14:36:00.004+05:302017-04-30T14:39:32.893+05:30WireMock - A simple standalone HTTP server for service virtualization<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">I hope, you have
already read "<a href="http://tirthalpatel.blogspot.in/2013/12/java-power-tools-series-preface.html" target="_blank">Preface</a>"
of my java power tools series. In this post, I intend to introduce WireMock
tool.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="text-decoration-line: underline;"><span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Straight from the horse's
mouth</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<a href="http://wiremock.org/" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">WireMock</span></a></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Mock your APIs for fast,
robust and comprehensive testing using WireMock (a simulator for
HTTP-based APIs / service virtualization tool / mock
server)</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Enables you to stay
productive when an API you depend on doesn't exist or isn't
complete</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Supports testing of edge
cases and failure modes that the real API won't reliably produce</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Features = HTTP response
stubbing, request verification, proxy/intercept, record/playback of stubs
and fault injection</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Flexible deployment options -
run it from within your Java application, JUnit test, Servlet container or
as a standalone process</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Powerful Request Matching -
Match request URLs, methods, headers cookies and bodies using a wide
variety of strategies & first class support for JSON and XML</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Record and Playback - Get up
and running quickly by capturing traffic to and from an existing API</span></li>
</ul>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="text-decoration-line: underline;"><span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif; font-size: large;">My Personal Feedback</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">I witnessed that
WireMock's is extremely easy to setup and harness. This tool can benefit appreciably in <a href="http://microservices.io/patterns/microservices.html" rel="nofollow" target="_blank">MicroServices Architecture</a>. Let me explain two scenarios, where I could take advantage of
WireMock. </span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-weight: bold; text-decoration-line: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif;">(1) Create quick prototypes
of REST APIs</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Many times, services
are not implemented by REST server apps or made available by external vendors.
Still, there is a pressing need to develop REST client app beforehand, may be
for demo purpose or meeting deliverable goals or due to any other business need.
Well, WireMock can help here to create prototypes of agreed APIs quickly, which
can be consume by client apps even without realizing these are stubbed APIs
instead of real. See <a href="http://wiremock.org/docs/running-standalone/" rel="nofollow" target="_blank">running wiremock as a standalone process</a> option.</span></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"></span></div>
<div style="margin: 0in 0in 0in 0.375in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKUiGaNMVNFeHCd2hqfV11upnuNfchnqk8ZXBEMu4HREw43tgkFbw98hTUs8xa0FgTJI9qlpnBkA6LWs-_TRrlk-KWDqmIGiQKp11I49XgpgnwhgrsHQ6nmHgQqVDeow4FlliM6ZBIhnrW/s1600/WireMock-01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="251" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKUiGaNMVNFeHCd2hqfV11upnuNfchnqk8ZXBEMu4HREw43tgkFbw98hTUs8xa0FgTJI9qlpnBkA6LWs-_TRrlk-KWDqmIGiQKp11I49XgpgnwhgrsHQ6nmHgQqVDeow4FlliM6ZBIhnrW/s400/WireMock-01.png" width="400" /></a></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<br />
<div style="margin: 0in;">
<span style="font-weight: bold; text-decoration-line: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif;">(2) Record real external
services and playback </span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">At times, client app
needs to consume third-party or external services over internet or network.
However, there are frequent connectivity issues or high latency problem or only
limited requests are supported per day due to chargeable services, specifically
while accessing these services in Development. Obviously, this may result in
high developer productivity loss. Well, WireMock has unique ability to record
real services (requests and responses) without a need of single line of coding
and playback those in even offline mode automatically. WireMock's this
record/playback of stubs feature can greatly boost developer productivity. See <a href="http://wiremock.org/docs/record-playback/" rel="nofollow" target="_blank">record and playback</a>
option.</span></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJQLHOFjrwGUjNfoeE40C-4A49H-v1eXiPyGQSFT5FnWG13EJpcTZ3nGropdthEndulVQrFoodkkv9uCX6dUuE6Qd_qLUeRevEe92XytMBq_SnxCoXyW6p2qdoYNkXTFQBakVLEpXP3EKL/s1600/WireMock-02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="262" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJQLHOFjrwGUjNfoeE40C-4A49H-v1eXiPyGQSFT5FnWG13EJpcTZ3nGropdthEndulVQrFoodkkv9uCX6dUuE6Qd_qLUeRevEe92XytMBq_SnxCoXyW6p2qdoYNkXTFQBakVLEpXP3EKL/s400/WireMock-02.png" width="400" /></a></div>
<div style="margin: 0in; text-align: center;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Other scenarios you
might want to consider WireMock for:</span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Testing mobile apps that
depend on third-party REST APIs</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Injecting otherwise
hard-to-create errors in 3rd party services</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Any unit testing of code that
depends on a web service</span></li>
</ul>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">All in all, WireMock
is a Java-based flexible library with a JSON API that can be used to
virtualize, mock, and stub web services. </span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="text-decoration-line: underline;"><span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Try WireMock Practically</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Now let's understand
fundamental ability of WireMock by running it as a standalone HTTP server and
stubbing web services. Let's see practically how effortless it is. </span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-weight: bold; text-decoration-line: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif;">ABC of WireMock standalone
server</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Download WireMock
jar latest version @ <a href="http://repo1.maven.org/maven2/com/github/tomakehurst/wiremock-standalone/" rel="nofollow" target="_blank">http://repo1.maven.org/maven2/com/github/tomakehurst/wiremock-standalone/</a></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">To
POST data to WireMock's REST endpoint (i.e. <a href="http://localhost:9999/__admin/" rel="nofollow" target="_blank">http://localhost:9999/__admin/</a>), you can use curl or postman tool or any other
choice of tool.</span></div>
<div style="margin: 0in;">
<br /></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Start wiremock as a
standalone server: <span style="font-weight: bold;"> <span style="background-color: yellow;">java -jar
wiremock-standalone-2.6.0.jar --port 9999 --verbose true</span></span></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">This would create
"__files" and "mappings" folders (in the same folder
where wiremock jar exists) to store stubbed services. <span style="color: #24292e;">To see what all
service stubs exist on WireMock server (within "__files" and
"mappings" folders), open admin console in browser: </span><a href="http://localhost:9999/__admin/" rel="nofollow" target="_blank">http://localhost:9999/__admin/</a></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #24292e;">To stop
wiremock, just kill the process or post a request with an empty body to
this REST endpoint: </span><a href="http://localhost:9999/__admin/shutdown" rel="nofollow" target="_blank">http://localhost:9999/__admin/shutdown</a></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #24292e;">For more
detail, see @ </span><a href="http://wiremock.org/docs/running-standalone/" rel="nofollow" target="_blank">http://wiremock.org/docs/running-standalone/</a><span style="color: #24292e;">. </span></span></li>
</ul>
<div style="margin: 0in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-kzNLQtZilKA/WQWmzTQ1eVI/AAAAAAAACYE/Nr9DqXLN6iYJcIYf5vpMS2bauJUmTHhKwCPcB/s1600/WireMock-03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="148" src="https://2.bp.blogspot.com/-kzNLQtZilKA/WQWmzTQ1eVI/AAAAAAAACYE/Nr9DqXLN6iYJcIYf5vpMS2bauJUmTHhKwCPcB/s640/WireMock-03.png" width="640" /></a></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-weight: bold; text-decoration-line: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Stubbing Services / Create
REST APIs Prototypes</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">A core feature of
WireMock is the ability to return canned HTTP responses for requests matching
criteria. These criteria can be defined in terms of URL, headers and body
content.</span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Post a stub mapping via the
JSON API to this REST endpoint (not persisted, so will lose this after
restarting server): <a href="http://localhost:9999/__admin/mappings/new" rel="nofollow" target="_blank"><span style="background: white;">http://localhost:9999/__admin/mappings/new</span></a></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #24292e;">Stub mappings
which have been created can be persisted to the mappings directory via a
POST request with an empty body to this REST endpoint: </span><a href="http://localhost:9999/__admin/mappings/save" rel="nofollow" target="_blank">http://localhost:9999/__admin/mappings/save</a></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #24292e;">Open admin
console in browser to validate the added stub mappings: </span><a href="http://localhost:9999/__admin/" rel="nofollow" target="_blank">http://localhost:9999/__admin/</a></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #24292e;">Access mock
REST services in browser: </span><a href="http://localhost:9999/hello-world" rel="nofollow" target="_blank">http://localhost:9999/hello-world</a></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="color: #24292e;"><span style="font-family: "arial" , "helvetica" , sans-serif;">To reset all
mock request url mapping and response data, just delete all files from
"mappings" and "__files" folders.</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="color: #24292e; margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">For more
detail, see @ <a href="http://wiremock.org/docs/stubbing/" rel="nofollow" target="_blank">http://wiremock.org/docs/stubbing/</a></span></li>
</ul>
<div style="margin: 0in 0in 0in 0.375in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4BPN2Dda04vxkJjLi1ppBoHwYxAmDfmTesvQpqkZVGmDg_t4GuVBV6WNnf9cOK6j5ih0W-zc0xDZ3OTLXRd4iBY0X2tA1KalhmdIO5zQaJoiNVAuL-XPQb3mZMwRb7UJfsgR9dM7gSHZh/s1600/WireMock-04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="451" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4BPN2Dda04vxkJjLi1ppBoHwYxAmDfmTesvQpqkZVGmDg_t4GuVBV6WNnf9cOK6j5ih0W-zc0xDZ3OTLXRd4iBY0X2tA1KalhmdIO5zQaJoiNVAuL-XPQb3mZMwRb7UJfsgR9dM7gSHZh/s640/WireMock-04.png" width="640" /></a></div>
<div style="margin: 0in; text-align: center;">
<br /></div>
<div style="margin: 0in;">
<span style="font-weight: bold; text-decoration-line: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Record external services and
Playback</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #24292e; margin-bottom: 12pt; margin-top: 0pt;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">WireMock has the ability to create stub mappings by recording
them while you send requests. This can be used to quickly capture a collection
of responses from a real service then use them offline in your tests.</span></div>
<div style="color: #24292e; margin-bottom: 12pt; margin-top: 0pt;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">For Example, run this command to record and playback Github
Developer APIs:</span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="color: #24292e; margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Run WireMock
server to proxy all requests of Github: <span style="background-color: yellow;"><span style="font-weight: bold;">java -jar </span><span style="color: black; font-weight: bold;">wiremock-standalone-2.6.0.jar</span><span style="font-weight: bold;">
--proxy-all="</span><a href="https://api.github.com/" rel="nofollow" target="_blank"><span style="font-weight: bold;">https://api.github.com</span></a><span style="font-weight: bold;">"
--port="9999" --record-mappings</span></span></span></li>
<li style="color: #24292e; margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Access Github
APIs via WireMock: <a href="http://localhost:9999/users/tirthalpatel" rel="nofollow" target="_blank">http://localhost:9999/users/tirthalpatel</a></span></li>
</ul>
<div style="margin: 0in;">
<br /></div>
<div style="margin-bottom: 12pt; margin-top: 0pt;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">For
any requested REST service request (i.e. <a href="http://localhost:9999/users/tirthalpatel" rel="nofollow" target="_blank">http://localhost:9999/users/tirthalpatel</a>),
first of all WireMock would check, if corresponding stub mapping exists in
"mappings" folder or not. If existing, then don't hit real service
rather serve recorded data from "mappings" and "__files"
folders. If not existing, then WireMock calls external real service (i.e. <a href="https://api.github.com/users/tirthalpatel" rel="nofollow" target="_blank">https://api.github.com/users/tirthalpatel</a>)
followed by records stub mapping followed by returns response to the client.
That means, we can expect WireMock to playback all recorded stub mappings even
if internet is unavailable.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglWQphRqiQhVCR8-rRTThVNpS0BTbq0GjrgS2HS8s7CjznWgCH9zLq6K7_qwevdtlpnd1s6e4lBQS-nS3Yx5KMk-KM8Ddng1gxuMYTzpqQZpCkXX-ZFuJjU6n0aqeocvRzn74O5eZhpzyc/s1600/WireMock-05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="432" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglWQphRqiQhVCR8-rRTThVNpS0BTbq0GjrgS2HS8s7CjznWgCH9zLq6K7_qwevdtlpnd1s6e4lBQS-nS3Yx5KMk-KM8Ddng1gxuMYTzpqQZpCkXX-ZFuJjU6n0aqeocvRzn74O5eZhpzyc/s640/WireMock-05.png" width="640" /></a></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold;">The above explained and few more examples, you can
find @ </span><a href="https://github.com/tirthalpatel/Learning-Tools/tree/master/gs-wiremock" rel="nofollow" target="_blank"><span style="background-color: yellow; font-weight: bold;">https://github.com/tirthalpatel/Learning-Tools/tree/master/gs-wiremock</span></a></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div style="margin: 0in;">
<span style="text-decoration-line: underline;"><span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Also See</span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="https://www.infoq.com/articles/Wiremock-testing-mocking-over-wire-stubs" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">https://www.infoq.com/articles/Wiremock-testing-mocking-over-wire-stubs</span></a></li>
</ul>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="text-decoration-line: underline;"><span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Disclaimer</span></span></div>
<br />
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">I am not biased to
particular free or commercial tools, rather my objective is about sharing my
own experience on set of tools.</span><span style="font-family: "calibri"; font-size: 11pt;"> </span></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-71042136965789661212017-01-14T19:06:00.001+05:302017-01-14T19:06:14.135+05:30Say "Hello" to Elastic Stack and How to get started with Elasticsearch 5.x?<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Last Saturday, I got
chance to attend "<a href="https://www.meetup.com/Ahmedabad-Java-Meetup-Group/events/236413726/" rel="nofollow" target="_blank">Log Aggregation and Analysis using Elastic Stack</a>" meetup, organized at <a href="http://www.ishisystems.com/" rel="nofollow" target="_blank">Ishi Systems</a>, Ahmedabad. Thanks to <a href="https://www.linkedin.com/in/damehta7" rel="nofollow" target="_blank">Dhaval Mehta</a>, speaker of this
meetup, who imparted excellent <a href="http://www.slideshare.net/DhavalMehta58/log-aggregation-and-analysis" rel="nofollow" target="_blank">presentation</a>
of this topic along with practical demo.
My key Learning from this meetup is: <span style="font-weight: bold;">To
accomplish common use cases like Log aggregation and analysis, it's all about
investing initial efforts for installation and configuration of open source
Elastic Stack (Beats, Logstash, Elasticsearch and Kibana). Apparently, no
development efforts are required.</span></span></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNrqH8176Gzhyphenhyphen-eEHPfwpRap7BfVhKvuW9ZNvtIIdjz60GPPYnCz8cRDwcRyKUN3pl__mPz1T_JzJb-ToJ9Ok4YcVAm5zsziXF00n-eZP2lIxegvBsffHXdy10H6Pj0E7nsBRHPk74QCYr/s1600/ElasticStack-Elasticsearch5-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Arial, Helvetica, sans-serif;"><img border="0" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNrqH8176Gzhyphenhyphen-eEHPfwpRap7BfVhKvuW9ZNvtIIdjz60GPPYnCz8cRDwcRyKUN3pl__mPz1T_JzJb-ToJ9Ok4YcVAm5zsziXF00n-eZP2lIxegvBsffHXdy10H6Pj0E7nsBRHPk74QCYr/s400/ElasticStack-Elasticsearch5-1.png" width="400" /></span></a></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Then, after
exploring and playing with Elastic Stack for few hours, I thought to write this
post today. In my view, with the <a href="https://www.elastic.co/blog/elastic-stack-5-0-0-released" rel="nofollow" target="_blank">release of Elastic Stack 5.0.0</a> in October 2016, now getting started with Elasticsearch
and associated products is a piece of cake.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-weight: bold;">Everything (Elasticsearch, Kibana, Beats, Logstash,
and X-Pack) is well aligned, tested and released together in Elastic Stack.
What does it mean to newbie?</span> Well, earlier individuals were responsible
to choose, integrate and test best suitable version of products or plugings to
accomplish overall Elasticsearch based solution. For example, which plugin to
use with Elasticsearch for monitoring, mavel or head plugin? Which version of
Logstash or of any other supported tooling will work impeccably with
Elasticsearch 1.x or Elasticsearch 2.x? Now, with <a href="https://www.elastic.co/v5" rel="nofollow" target="_blank">Elastic Stack version 5.0</a> onwards, one
gets production ready harmonized products. That means, overall experience to
deploy and manage Elastic Stack is anticipated to be stable and more graceful
than earlier. </span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-weight: bold;">The Open Source Elastic Stack </span>= Reliably and
securely take data from any source, in any format, and search, analyze,
and visualize it in real time.<span style="font-weight: bold;"> Be aware, X-Pack
is commercial offering.</span></span></div>
<div style="direction: ltr;">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-color: #A3A3A3; border-style: solid; border-width: 1pt; direction: ltr; margin-left: .3333in;" valign="top">
<tbody>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.3229in;">
<div style="margin: 0in; text-align: center;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">Products</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 4.2756in;">
<div style="margin: 0in; text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-weight: bold;">Description </span>(<a href="https://www.elastic.co/products" rel="nofollow" target="_blank">see for detail</a>)</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 4.0812in;">
<div style="margin: 0in; text-align: center;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">Essential Information</span></span></div>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.3229in;">
<div style="margin: 0in;">
<a href="https://www.elastic.co/products/kibana" rel="nofollow" target="_blank"><span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">Kibana</span></span></a></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 4.2756in;">
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-weight: bold;">Visualize your data and navigate the Elastic Stack
using Kibana</span>. </span></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Kibana gives shape
to your data and is the extensible user interface for configuring and
managing all aspects of the Elastic Stack.</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 4.0812in;"><ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;">An open source analytics
and visualization platform designed to work with Elasticsearch. Offers
easy to use UI for performing advanced data analysis and visualization
of data in variety of charts, tables, maps.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">What if some exceptional
use case is not supported out-of-the-box in Kibana? - Well, need to
consider <a href="https://github.com/elastic/generator-kibana-plugin" rel="nofollow" target="_blank">Kibana plugin development using "Node, Javascript, HTML and CSS"</a>.</span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="direction: ltr; margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.3229in;">
<div style="margin: 0in;">
<a href="https://www.elastic.co/products/elasticsearch" rel="nofollow" target="_blank"><span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">Elasticsearch</span></span></a></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 4.2756in;">
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-weight: bold;">Store, search, and analyze your data using
Elasticsearch</span>. </span></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Elasticsearch is a
distributed, JSON-based search and analytics engine, designed for horizontal
scalability, reliability, and easy management.</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 4.0812in;"><ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Elasticsearch is
distributed document store and search server, which offers standard
RESTful APIs and JSON to interact with it via client libraries in many
languages such as <a href="https://www.elastic.co/guide/en/elasticsearch/client/index.html" rel="nofollow" target="_blank">Java, Python, .NET, Groovy, etc.</a>
In case of Java application, one may consider <a href="https://projects.spring.io/spring-data-elasticsearch/" rel="nofollow" target="_blank">Spring Data Elasticsearch</a> for interacting with
Elasticsearch.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Typical use cases of
Elasticsearch are: (1) Elasticsearch as the primary back end
(document-oriented NoSQL data store with near real-time search and
analytics capabilities) for an application (2) System using another
database as the "source of truth", and added Elasticsearch to
an existing system to offer enterprise search (3) Using Elasticsearch
with existing tools, such as ELK as a large-scale logging framework,
now branded as Elastic Stack.</span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="direction: ltr; margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.3229in;">
<div style="margin: 0in;">
<a href="https://www.elastic.co/products/beats" rel="nofollow" target="_blank"><span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">Logstash</span></span></a></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 4.2756in;">
<div style="margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">Centralize, Transform & Stash Your Data using
Logstash.</span></span></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Logstash is an
open source, server-side data processing pipeline that ingests data from a
multitude of sources simultaneously, transforms it, and then sends it to your
favorite “stash.” It has a rich, extensible plugin ecosystem and strong
Elasticsearch synergy.</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 4.0812in;"><ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Logstash ecosystem already
has 200+ plugins to mix, match, and orchestrate different inputs,
filters, and outputs to work in pipeline harmony. (see <a href="https://www.elastic.co/support/matrix#show_logstash_plugins" rel="nofollow" target="_blank">support matrix</a>)</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">What if
ready-to-use-plugin is not available for specific custom need? Well,
consider to <a href="https://www.elastic.co/guide/en/logstash/current/contributing-to-logstash.html" rel="nofollow" target="_blank">develop a custom Logstash plugin using "Ruby"</a>.</span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="direction: ltr; margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.3229in;">
<div style="margin: 0in;">
<a href="https://www.elastic.co/products/beats" rel="nofollow" target="_blank"><span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">Beats</span></span></a></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 4.2756in;">
<div style="margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">Lightweight Data Shippers.</span></span></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Beats is the
platform for single-purpose data shippers. They install as lightweight agents
and send data from hundreds or thousands of machines to Logstash or
Elasticsearch.</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 4.0812in;"><ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;">The Beats family mainly
includes (1) Filebeat (for real-time insight into log data) (2)
Metricbeat (to ship and analyze metrics) (3) Packetbeat (to analyze
network packet data) (4) Winlogbeat (to analyze windows event logs).
Additionally, there are numerous <a href="https://www.elastic.co/guide/en/beats/libbeat/current/community-beats.html" rel="nofollow" target="_blank">community beats</a> are available.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">What if ready-to-use Beat
is not available for specific custom need? Well, consider to <a href="https://www.elastic.co/guide/en/beats/libbeat/current/new-beat.html" rel="nofollow" target="_blank">develop a custom Beat using "Go"</a>.</span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="direction: ltr; margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.3229in;">
<div style="margin: 0in;">
<a href="https://www.elastic.co/products/x-pack" rel="nofollow" target="_blank"><span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">X-Pack</span></span></a></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 4.2756in;">
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Security (formerly Shield), Altering (via Watcher),
Monitoring (formerly Marvel), Graph and Reporting using X-Pack</b>. </span></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">X-Pack
has features built and maintained by Elastic engineers that integrate across
the Elastic Stack.</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 4.0812in;"><ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Premium offering of
Elastic Stack</span></li>
<li><a href="https://www.elastic.co/guide/en/x-pack/current/license-management.html" rel="nofollow" target="_blank"><span style="font-family: Arial, Helvetica, sans-serif;">30 day trial license and then need to purchase a subscription</span></a></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="direction: ltr; margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
</tr>
</tbody></table>
</div>
<div style="margin: 0in; text-align: left;">
<br />Also, available as <a href="https://www.elastic.co/cloud/as-a-service/signup" rel="nofollow" style="font-family: Arial, Helvetica, sans-serif;" target="_blank">Elastic Cloud</a><span style="font-family: Arial, Helvetica, sans-serif;">
service offering.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="text-decoration: underline;"><span style="color: #660000; font-family: Arial, Helvetica, sans-serif; font-size: large;">How to get started with
Elasticsearch 5.x?</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">First of all,
understand <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/_basic_concepts.html" rel="nofollow" target="_blank">basic concepts of Elasticsearch</a> (cluster, node, index, type, document, shards and
replicas) + see slide @ <a href="http://www.slideshare.net/kduvnjak/elasticsearch-as-a-search-alternative-to-a-relational-database" rel="nofollow" target="_blank">Elasticsearch as a search alternative to a relational database</a> + watch webcast @ <a href="https://www.youtube.com/watch?v=G56aE1kiOZw" rel="nofollow" target="_blank">Your Data, Your Search, Elasticsearch</a>.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Try fundamental
Elasticsearch REST APIs for <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/_exploring_your_cluster.html" rel="nofollow" target="_blank">exploring cluster</a>, <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/_modifying_your_data.html" rel="nofollow" target="_blank">modifying your data</a> and <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/_exploring_your_data.html" rel="nofollow" target="_blank">explore your data</a> practically. For this, mainly two options available:</span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;">Install Elasticsearch on your
local machine</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;">Leverage 14 days trial of
Elastic Cloud</span></li>
</ul>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="text-decoration: underline;"><span style="color: #660000; font-family: Arial, Helvetica, sans-serif; font-size: large;">Option 1: Install
Elasticsearch on your local machine</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">For learning
Elasticsearch for long term interest, installing it locally could be good
option. Here, you have multiple options.</span></div>
<ol style="direction: ltr; margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="1">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;" value="1"><span style="font-family: Arial, Helvetica, sans-serif;">Just <a href="https://www.elastic.co/downloads/elasticsearch" rel="nofollow" target="_blank">install Elasticsearch</a> and try REST APIs using your choice of REST
client tool such as postman, curl, etc.</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;">Use <a href="https://hub.docker.com/_/elasticsearch/" rel="nofollow" target="_blank">Elasticsearch docker image</a>, if you are fan of docker.</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><a href="https://www.elastic.co/downloads" rel="nofollow" target="_blank">Install Elasticsearch -> Kibana -> X-Pack</a>. Personally, I prefer this
option.</span></li>
</ol>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">If you install
Elasticsearch, Kibana and X-Pack, then login Kibana (<a href="http://localhost:5601/" rel="nofollow" target="_blank">http://localhost:5601/</a>) using default
username/password (elastic / changeme). Then, use "Dev Tools" to play
with Elasticsearch REST APIs & see how Elasticsearch clusters, nodes and
indices react in "Monitoring" section. </span></div>
<div style="margin: 0in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG2NaPHNMBuqNPfIoYJ1-zElX5jTOiKqtVcGC5z3UFx2AKRJ_nLrrzzrnu6DegZicnxWUN8NY2ITb0S3PWTVZqQio1wWOllF7SPi6r8woeDY-xshNxZWjZPMQEGqyn4G0RIzhFElRYUFvB/s1600/ElasticStack-Elasticsearch5-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG2NaPHNMBuqNPfIoYJ1-zElX5jTOiKqtVcGC5z3UFx2AKRJ_nLrrzzrnu6DegZicnxWUN8NY2ITb0S3PWTVZqQio1wWOllF7SPi6r8woeDY-xshNxZWjZPMQEGqyn4G0RIzhFElRYUFvB/s640/ElasticStack-Elasticsearch5-2.png" width="442" /></a></div>
<br />
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="text-decoration: underline;"><span style="color: #660000; font-family: Arial, Helvetica, sans-serif; font-size: large;">Option 2: Leverage 14 days
trial of Elastic Cloud</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">If you don't wish to
install Elasticsearch locally, may be because you are just interested in
exploring fundamentals, then just go for leveraging Elastic Cloud to get
started with it.</span></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><ol style="text-align: left;">
<li>Sign up to <a href="https://cloud.elastic.co/" rel="nofollow" target="_blank">Elastic Cloud</a> and Login</li>
<li>Create new cluster and
preserve the password which you get at the end</li>
<li>Open Kibana UI and login
using the password which you got in previous step, and use "Dev
Tools" section to play with Elasticsearch REST APIs</li>
</ol>
</span><div style="margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;"></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjavc8PaXucQLHAnLxp1ALvtyGrhGQdtR21GUMLOopE4jOO28W51GceoJAIbYxIY8rTMFMf9z5x2QrWYjpx7d_W3_-gqkLKxW6eCu-QojOSDhh1XfZr2tuRCoeQ4zqY_B585hyphenhyphenHBZ48c1Wq/s1600/ElasticStack-Elasticsearch5-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="368" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjavc8PaXucQLHAnLxp1ALvtyGrhGQdtR21GUMLOopE4jOO28W51GceoJAIbYxIY8rTMFMf9z5x2QrWYjpx7d_W3_-gqkLKxW6eCu-QojOSDhh1XfZr2tuRCoeQ4zqY_B585hyphenhyphenHBZ48c1Wq/s400/ElasticStack-Elasticsearch5-3.png" width="400" /></a></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-weight: bold; text-decoration: underline;"><span style="font-family: Arial, Helvetica, sans-serif;">Disclaimer</span></span></div>
<br />
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">I am not biased to
promote any particular free or commercial products offering, rather my
objective is limited to share my own experience.</span></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-25426273039315783842016-11-27T15:40:00.004+05:302016-11-27T15:40:43.650+05:30Docker Toolbox on Windows: Mount any host directory (other than Users directory in c drive) as a data volume<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">This post is for
you, if you are looking for mounting a host directory (which is not underneath
the "C:\Users" folder) as a data volume in docker container using <a href="https://www.docker.com/products/docker-toolbox" rel="nofollow" target="_blank">Docker Toolbox on Windows</a>.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="color: #660000; font-family: Arial, Helvetica, sans-serif; font-size: large;"><span style="text-decoration: underline;">Problem Statement</span>:</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">If you are trying to
<a href="https://docs.docker.com/engine/tutorials/dockervolumes/#/mount-a-host-directory-as-a-data-volume" rel="nofollow" target="_blank">mount a host directory (other than any folder not underneath the "C:\Users"folder) as a data volume specifically using Docker Toolbox on Windows</a>, then
it's quite tricky to do. </span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">As per docker
documentation --- "If you are using Docker Machine on Mac or Windows, your
Docker Engine daemon has only limited access to your OS X or Windows
filesystem. Docker Machine tries to auto-share your /Users (OS X) or C:\Users
(Windows) directory. So, you can mount files or directories on OS X
using". </span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">This means, you can <span style="font-weight: bold;">mount anything underneath "c:\Users"
directory of host your Windows machine as a data volume in docker container
seamlessly</span>. For example, let's say you want to dump some data from
"c:\Users\tirthalp\data" directory to "data" directory
within Redis container in docker. Well, below just executing command will
enable you to do it.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in 0in 0in 0.375in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">docker run -v /c/Users/tirthalp/.docker/data:/data
--name <container-name> <image-name></span></span></div>
<div style="margin: 0in 0in 0in 0.375in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt8la8Iqm8aIRBy8mkYana7ifmrsS-GEpJ7jaDxbWCvezPfnUcJT7vvnhkjtI7ZvmiFHRzL9PJ9DD-BvRrwCCMqi9S0eQl53LIlmQaz3L47LlIp0gJvcOXtzWhyphenhyphengcJk_UQz5yvLxlv5xmd/s1600/Docker-Windows-Mount-Directory-As-Data-Volume-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt8la8Iqm8aIRBy8mkYana7ifmrsS-GEpJ7jaDxbWCvezPfnUcJT7vvnhkjtI7ZvmiFHRzL9PJ9DD-BvRrwCCMqi9S0eQl53LIlmQaz3L47LlIp0gJvcOXtzWhyphenhyphengcJk_UQz5yvLxlv5xmd/s400/Docker-Windows-Mount-Directory-As-Data-Volume-1.png" width="400" /></a></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">But, <span style="font-weight: bold;">what is there is a need of mounting other folders (any
folder which is not underneath "c:\Users" directory) of your Windows
machine as a data volume in docker container?</span> Well, that's not a piece
of cake. For example, if you execute below command, the container would not
complain. But actually mounting of folder in D drive as a data volume could not
happen and data from your host Windows machine would not be accessible in
docker container.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in 0in 0in 0.375in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">docker run -v /d/x-temp/data:/data --name
<container-name> <image-name></span></span></div>
<div style="margin: 0in 0in 0in 0.375in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL-mky-YLxSKNzh-YcsTF4-VAFqfU6lrG4hJBnbqsvG9aX4JXFddZcoS6cLCu5lgndf8fptvsMmUniVHj-RhuOSLUCAO_mjq1XtzqGtU62T5pxraAqFcJgqoWbmi3VQax4RSErf07ym1Mt/s1600/Docker-Windows-Mount-Directory-As-Data-Volume-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="138" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL-mky-YLxSKNzh-YcsTF4-VAFqfU6lrG4hJBnbqsvG9aX4JXFddZcoS6cLCu5lgndf8fptvsMmUniVHj-RhuOSLUCAO_mjq1XtzqGtU62T5pxraAqFcJgqoWbmi3VQax4RSErf07ym1Mt/s400/Docker-Windows-Mount-Directory-As-Data-Volume-2.png" width="400" /></a></div>
<div style="margin-left: .375in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="color: #660000; font-family: Arial, Helvetica, sans-serif; font-size: large;"><span style="text-decoration: underline;">Solution</span>:</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">I could not locate
official docker documentation on this. After giving few tries, finally these
steps worked --- <a href="http://www.erikojebo.se/Code/Details/791" rel="nofollow" target="_blank">add a shared folder to Docker Host VM and mount it as a data volume</a>. Although the
given steps are pretty clear, I thought to share screenshots of the same as
following.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-weight: bold; text-decoration: underline;">Step 1</span><span style="font-weight: bold;">: Stop Docker Machine</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuC7YNUbXe1tvURUoBAIFthWfqm33K6TjmTQmLlXiIIguCHDGtK2Mu98Wf0pHGtl9yk7ZV2_KUhHp-0znugpjxQgwxDQ2rrTI_jxP-vYrdmrEybDIefwBgUxyME6fFcI5Rj9BjUpaJedMq/s1600/Docker-Windows-Mount-Directory-As-Data-Volume-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuC7YNUbXe1tvURUoBAIFthWfqm33K6TjmTQmLlXiIIguCHDGtK2Mu98Wf0pHGtl9yk7ZV2_KUhHp-0znugpjxQgwxDQ2rrTI_jxP-vYrdmrEybDIefwBgUxyME6fFcI5Rj9BjUpaJedMq/s1600/Docker-Windows-Mount-Directory-As-Data-Volume-3.png" /></a></div>
<div style="margin-left: .375in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-weight: bold; text-decoration: underline;">Step 2</span><span style="font-weight: bold;">: Add Shared Folder in Oracle VirtualBox Manager</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Open Oracle VM
VirtualBox Manager. Settings -> Shared Folder -> Add Share Folder (i.e.
Tirthal-LABs).</span></div>
<div style="margin: 0in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtq04bwi8-Pe8pZJedJp0ufZLwVYPYaerGJPC9C43p8WYGQhB5iKy0a2VEhNPiurVEBQK0NetFCbVUtbG16Zc-682dNddEcr0f5d56xnKF6dQ4JDZj0NBt81Ar7nNzxamcE5G7tzwxu2qV/s1600/Docker-Windows-Mount-Directory-As-Data-Volume-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtq04bwi8-Pe8pZJedJp0ufZLwVYPYaerGJPC9C43p8WYGQhB5iKy0a2VEhNPiurVEBQK0NetFCbVUtbG16Zc-682dNddEcr0f5d56xnKF6dQ4JDZj0NBt81Ar7nNzxamcE5G7tzwxu2qV/s400/Docker-Windows-Mount-Directory-As-Data-Volume-4.png" width="400" /></a></div>
<div style="margin-left: .375in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-weight: bold; text-decoration: underline;">Step 3</span><span style="font-weight: bold;">: Permanently mount VirtualBox shared folder as a
shared-data volume in Docker machine</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Start docker
machine.</span></div>
<div style="margin: 0in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFSFFFbMR62mdfNWlNMgSa9KKZzNz-VC0nd2DlVm1ADoqF4l7PRLwKhl5I0RNvr-SzWQGQuNrR2og3DWiSqovB1Fs7SiDTC28w9sDq2BBW6h0talhgFjTd1DyRZ2O9KQkpzbpQzHSs19zm/s1600/Docker-Windows-Mount-Directory-As-Data-Volume-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="55" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFSFFFbMR62mdfNWlNMgSa9KKZzNz-VC0nd2DlVm1ADoqF4l7PRLwKhl5I0RNvr-SzWQGQuNrR2og3DWiSqovB1Fs7SiDTC28w9sDq2BBW6h0talhgFjTd1DyRZ2O9KQkpzbpQzHSs19zm/s400/Docker-Windows-Mount-Directory-As-Data-Volume-5.png" width="400" /></a></div>
<div style="margin-left: .375in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">SSH to docker
machine, create directory in docker machine (i.e.
/home/docker/tirthal-projects) and mount VirtualBox shared folder name (i.e.
Tirthal-LABs) with it. This should enable you to access host Windows machine's
data in docker machine @ /home/docker/tirthal-projects.</span></div>
<div style="margin: 0in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJirHGn3-OgiRI9q3mSt7cMvc2IUcbp4UWGok4ABYQtJuJZhJSTItkURTonXn7lLu5huaW7pQw00cw_CbR_S0FyLpFu1GPLawTmnPGj1BaUNAxsMJDjtKMnwgk5Jbr4_0kePfvn1F5UBfO/s1600/Docker-Windows-Mount-Directory-As-Data-Volume-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJirHGn3-OgiRI9q3mSt7cMvc2IUcbp4UWGok4ABYQtJuJZhJSTItkURTonXn7lLu5huaW7pQw00cw_CbR_S0FyLpFu1GPLawTmnPGj1BaUNAxsMJDjtKMnwgk5Jbr4_0kePfvn1F5UBfO/s400/Docker-Windows-Mount-Directory-As-Data-Volume-6.png" width="400" /></a></div>
<div style="margin-left: .375in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Try restarting
docker machine. Now if you check at /home/docker/tirthal-projects, you would
not see mounted host machine's data. For permanent mounting, add following two
lines at the end of profile --- <span style="font-weight: bold;">sudo vi
/mnt/sda1/var/lib/boot2docker/profile</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in 0in 0in 0.375in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">mkdir /home/docker/<directory-name></span></span></div>
<div style="margin: 0in 0in 0in 0.375in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">sudo mount -t vboxsf -o uid=1000,gid=50
<virtual-box-shared-folder-name> /home/docker/<directory-name></span></span></div>
<div style="margin: 0in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxsNPcHcsMdLu-AUwsoNPRQkKOd6VAsoSMcxmBzcJ06z2UxOG8nCQMTaZzXQzs_ggpdLqeCH0qT4M9cHLDbCkxOo680Gi9SGxlMDkovsoCRVnSSzoMgAWB1hT8hae-snklGyKmzgyhkBVK/s1600/Docker-Windows-Mount-Directory-As-Data-Volume-7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="336" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxsNPcHcsMdLu-AUwsoNPRQkKOd6VAsoSMcxmBzcJ06z2UxOG8nCQMTaZzXQzs_ggpdLqeCH0qT4M9cHLDbCkxOo680Gi9SGxlMDkovsoCRVnSSzoMgAWB1hT8hae-snklGyKmzgyhkBVK/s400/Docker-Windows-Mount-Directory-As-Data-Volume-7.png" width="400" /></a></div>
<div style="margin-left: .375in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Try restarting
docker machine again. Now if you check at /home/docker/tirthal-projects, you
would not see mounted host machine's data.</span></div>
<div style="margin: 0in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3zuCPLQRvlI7TxBlmTgzk0yhrE7AQ0saEMN88R1X0sKSwAixRY2AH0ba00dWaPD18YtrEdCiLsWjKKhS261NFGqftkxjMA013rzNTdjr2tW2wP8Gf-06IapOVUpONTQpQH7RMHjpQUZF_/s1600/Docker-Windows-Mount-Directory-As-Data-Volume-8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="166" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3zuCPLQRvlI7TxBlmTgzk0yhrE7AQ0saEMN88R1X0sKSwAixRY2AH0ba00dWaPD18YtrEdCiLsWjKKhS261NFGqftkxjMA013rzNTdjr2tW2wP8Gf-06IapOVUpONTQpQH7RMHjpQUZF_/s400/Docker-Windows-Mount-Directory-As-Data-Volume-8.png" width="400" /></a></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-weight: bold; text-decoration: underline;">Step 4</span><span style="font-weight: bold;">: Mount a shared-storage volume as a data volume</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Now you should be
able to mount even other than "c:\Users" directories of host Windows
machine in docker container as a data volume, if you have completed the above
steps 1 to 3 successfully. For example, following command would mount "data"
folder in container with a shared-storage
"/home/docker/tirthal-projects/temp" on docker machine. Here, the
"/home/docker/tirthal-projects" is mounted with the host Window
machine's folder (i.e. D:\Tirthal-LABs\).</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in 0in 0in 0.375in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">docker run -v /home/docker/tirthal-projects/temp:/data
--name <container-name> <image-name></span></span></div>
<div style="margin: 0in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-Ow_cMATPoUY/WDqv5LVaY_I/AAAAAAAACVY/-DrPa2IGsPIL8GXpmTowmiR77mmaZCgzQCPcB/s1600/Docker-Windows-Mount-Directory-As-Data-Volume-9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="128" src="https://2.bp.blogspot.com/-Ow_cMATPoUY/WDqv5LVaY_I/AAAAAAAACVY/-DrPa2IGsPIL8GXpmTowmiR77mmaZCgzQCPcB/s400/Docker-Windows-Mount-Directory-As-Data-Volume-9.png" width="400" /></a></div>
<div style="margin-left: .375in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="color: #660000; font-family: Arial, Helvetica, sans-serif; font-size: large;"><span style="text-decoration: underline;">References</span>:</span></div>
<br />
<ul style="margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; text-align: left; unicode-bidi: embed;" type="disc">
<li><a href="https://docs.docker.com/engine/installation/windows/" rel="nofollow" target="_blank"><span style="font-family: Arial, Helvetica, sans-serif;">https://docs.docker.com/engine/installation/windows/</span></a></li>
<li><a href="https://docs.docker.com/engine/tutorials/dockervolumes/#/mount-a-host-directory-as-a-data-volume" rel="nofollow" target="_blank"><span style="font-family: Arial, Helvetica, sans-serif;">https://docs.docker.com/engine/tutorials/dockervolumes/#/mount-a-host-directory-as-a-data-volume</span></a></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://www.erikojebo.se/Code/Details/791" rel="nofollow" target="_blank">http://www.erikojebo.se/Code/Details/791</a></span></li>
</ul>
<br /><ul style="margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; text-align: left; unicode-bidi: embed;" type="disc">
</ul>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-24406755259559703022016-09-25T16:13:00.000+05:302016-09-25T16:13:49.489+05:30Liferay Portal 7 - Getting Started Guide Series<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">I had written step
by step post for <a href="http://tirthalpatel.blogspot.com/2014/02/liferay-portal-6.2-development-setup-guide.html" target="_blank">LiferayPortal 6.2 - Getting Started Guide - Development Setup using Eclipse Kepler</a>
in past. Today, I thought to write series of posts for getting started with
recently released Liferay Portal 7 CE, which has major changes with respect to
introducing modular architecture and related development strategy. </span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you are new to
portal, then read <a href="http://www.liferay.com/products/what-is-a-portal/web-platform" rel="nofollow" target="_blank">what is portal</a>? If you are new to Liferay, then read <a href="https://dev.liferay.com/discover/portal/-/knowledge_base/7-0/what-is-liferay" rel="nofollow" target="_blank">what is Liferay Portal</a> (now broadly known as <a href="https://www.liferay.com/digital-experience-platform" rel="nofollow" target="_blank">Liferay Digital Experience Platform</a>)? But most of time, we don't understand all theoretical
fundamentals until we have environment to try something practically. So first
attempt can be to setup latest Liferay portal to try its few out-of-box
features and functionalities. Then, further attempts can be setup Liferay IDE
for creating hello world project and deploying to Liferay Portal.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Following series of
posts may help you to <span style="font-weight: bold;">get started with Liferay
Portal 7</span> quickly, if you already have experience with Java development
using Eclipse.</span></div>
<ol style="direction: ltr; margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="1">
<li style="margin-bottom: 0px; margin-top: 0px; vertical-align: middle;" value="1"><span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://tirthalpatel.blogspot.com/2016/09/liferay-portal-7-ggs-liferay-portal-setup.html" target="_blank">Step by step guide to setup Liferay Portal</a></span></li>
<li style="margin-bottom: 0px; margin-top: 0px; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://tirthalpatel.blogspot.com/2016/09/liferay-portal-7-ggs-development-tooling-options.html" target="_blank">Understanding Liferay Development Tooling options</a></span></li>
<li style="margin-bottom: 0px; margin-top: 0px; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://tirthalpatel.blogspot.com/2016/09/liferay-portal-7-ggs-liferay-ide-setup.html" target="_blank">Basic setup of Liferay IDE</a></span></li>
<li style="margin-bottom: 0px; margin-top: 0px; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://tirthalpatel.blogspot.com/2016/09/liferay-portal-7-ggs-hello-world-portlet-module.html" target="_blank">Using Liferay IDE for Hello World Liferay MVC Portlet development and deployment</a></span></li>
</ol>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">For now, enjoy these
posts. I may add few more to the above list in future!</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-weight: bold; text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Also Refer</span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="https://web.liferay.com/web/jamie.sammons/blog/-/blogs/liferay-portal-7-0-ce-release" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Liferay Portal 7.0 CE Release Announcement</span></a></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/whats-changed-and-what-hasnt" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">What's changed and what hasn't in Liferay 7</span></a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "arial" , "helvetica" , sans-serif; margin-left: 1em; margin-right: 1em;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI3Wv1Z9SknITTwd1j7dkrLgjtIMk0Dwp01f7RR-c_jkosyTPdJY2QxwRtdPmLRryvraUNlOO40VZBkiAzts5vEVnKtsNUJzvZdBUldqHNjpQ_7lm9Tp7Jn85RtkiD7S1P3IXp3UTV27Vp/s1600/lp7-gsg-series-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI3Wv1Z9SknITTwd1j7dkrLgjtIMk0Dwp01f7RR-c_jkosyTPdJY2QxwRtdPmLRryvraUNlOO40VZBkiAzts5vEVnKtsNUJzvZdBUldqHNjpQ_7lm9Tp7Jn85RtkiD7S1P3IXp3UTV27Vp/s400/lp7-gsg-series-1.png" width="315" /></a></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="https://github.com/liferay/liferay-portal/tree/7.0.x" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Liferay 7 Modular Source Code</span></a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "arial" , "helvetica" , sans-serif; margin-left: 1em; margin-right: 1em;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZqoBnHPQ2-sqHdca2ezE6OXvPOzsiyw8yHyf9tvCZfyOJcGTcPjxEBMjT_HmWwC1fG-4UHeKEv7Lnicghyphenhyphen1Bc50wQNWCPTLDzS-WoYP96gFR6QOlSR3eTGSsvOPRB9WhS4OMTDWM87iQf/s1600/lp7-gsg-series-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="347" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZqoBnHPQ2-sqHdca2ezE6OXvPOzsiyw8yHyf9tvCZfyOJcGTcPjxEBMjT_HmWwC1fG-4UHeKEv7Lnicghyphenhyphen1Bc50wQNWCPTLDzS-WoYP96gFR6QOlSR3eTGSsvOPRB9WhS4OMTDWM87iQf/s400/lp7-gsg-series-2.png" width="400" /></a></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://www.liferaysavvy.com/2016/03/liferay-7-features.html" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Liferay 7 Features from Developer Perspective</span></a></li>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="circle">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">OSGi Support</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Bootstrap 3.0 Look and Feel</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Java 8 Support</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Alloy Editor</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Elastic Search</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Support Integration Testing
through Arquillian</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Application Display
Templates Support for Login, Language and Breadcrumb portlets.</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Improvements in Web content
management</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Singe Page Application
Development</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Document Management storages
extracted as modules </span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Service Builder code now
uses Declarative Services instead of Spring for dependency injection</span></li>
</ul>
</ul>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-60308197696422254712016-09-25T16:12:00.000+05:302016-09-25T16:12:44.665+05:30Liferay Portal 7 - Getting Started Guide - Hello World Portlet Module using Liferay IDE<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">This post is part of
<a href="http://tirthalpatel.blogspot.com/2016/09/liferay-portal-7-getting-started-guide-series.html" rel="nofollow" target="_blank">Liferay Portal 7 Getting Started Guide Series</a>.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Now, it's time to<span style="font-weight: bold;"> get started with Liferay IDE for hello world liferay
mvn portlet module development and deployment to Liferay Portal</span> by
following below quick steps<span style="font-weight: bold;">.</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Liferay Workspace
and Module Project = Newly introduced concept of Liferay 7, and were not in
Liferay 6.2.x or prior versions.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Prerequisite</span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://tirthalpatel.blogspot.com/2016/09/liferay-portal-7-ggs-liferay-portal-setup.html" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Basic Setup of Liferay IDE</span></a></li>
</ul>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Create Workspace Project</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/liferay-workspace" rel="nofollow" target="_blank">Liferay Workspace</a> can be used to hold and manage Liferay projects, which is the
official way to create Liferay 7.0 modules using Gradle. Let's create it using
Liferay IDE -> New Liferay Workspace Project -> Give Workspace name and
Finish. This should switch you to "Liferay Workspace" perspective, in
case it was not by default. (In case you lose Liferay Perspective, then set it
again using Window -> Perspective -> Other Perspective..) </span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">While creating new
workspace, don't select "Download liferay bundle" option, as we
consider to deploy our hello world module into locally running Liferay portal
instance which is outside of workspace. Alternatively, if you wish to auto
generate liferay within workspace and deploy modules there, then this option
can be used.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqGY9yKhjg6NlImUVy-u6L6zPn29nAj3i5nYoTMJF-EEGVqZnT0WjhI-ejE8X9oziELcso6FK18xMLGWdD_QbXiMbEl6_5ZBy8eAr2mGiGbsuvJLfkve5glGaJSfCVqR7VOemvgjqll7oF/s1600/lp7-gsg-liferay-hello-world-portlet-module-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="310" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqGY9yKhjg6NlImUVy-u6L6zPn29nAj3i5nYoTMJF-EEGVqZnT0WjhI-ejE8X9oziELcso6FK18xMLGWdD_QbXiMbEl6_5ZBy8eAr2mGiGbsuvJLfkve5glGaJSfCVqR7VOemvgjqll7oF/s400/lp7-gsg-liferay-hello-world-portlet-module-1.png" width="400" /></a></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span lang="en-US" style="text-decoration: underline;">Note</span><span lang="en-US">: If
you’ve already created a Liferay Workspace and you’d like to import it into
your existing IDE, you can do so by navigating to File -></span><span lang="x-IV_mathan"> Import -> Liferay -> Liferay Workspace
Project. Then, click Next and browse for your worspace project. Once
you’ve selected you workspace, click Finish.</span></span></div>
<div lang="x-IV_mathan" style="margin: 0in;">
<br /></div>
<div lang="x-IV_mathan" style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">After
creating workspace project, let's proceed to create Hello World module project.
</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Create Hello World MVC
Portlet Module Project</span></span></div>
<div style="margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Select
"modules" folder in workspace and use New Liferay Module Project
option to create Liferay Module. Give your choice of project name (i.e.
hello-world-mvc-portlet), select "mvcportlet" in Project Template
name and click Finish. That's it. At this point we have our structure and our
portlet default code underneath the modules folder in the workspace. Just
quickly explore auto-generated code.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxRBKsIF6x9nBM-ZJfF4HqoCax7VbPrHrnZtQv7SqfBNT5oolFmcpmSFCCyP11pMAnSvlW4ot2l81bOmnah-iEWbWyFNXjvrPO3Hpy4piq98C5T6ftkl8zTfdAklx7zmgi76tlGbzKHCus/s1600/lp7-gsg-liferay-hello-world-portlet-module-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxRBKsIF6x9nBM-ZJfF4HqoCax7VbPrHrnZtQv7SqfBNT5oolFmcpmSFCCyP11pMAnSvlW4ot2l81bOmnah-iEWbWyFNXjvrPO3Hpy4piq98C5T6ftkl8zTfdAklx7zmgi76tlGbzKHCus/s640/lp7-gsg-liferay-hello-world-portlet-module-2.png" width="492" /></a></div>
<div style="margin-left: .75in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="text-decoration: underline;">Note</span>: If you look at the @
Component's property and you’ve been a Liferay developer, these should
look familiar as they were once XML attributes that were previously in
liferay-portlet.xml, liferay-display.xml, and portlet.xml. The options
available are in <a href="https://docs.liferay.com/portal/7.0/definitions/liferay-portlet-app_7_0_0.dtd.html" rel="nofollow" target="_blank">liferay-portlet-app_7_0_0.dtd</a>.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span lang="en-US">Refer
</span><a href="https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/creating-modules-with-liferay-ide" rel="nofollow" target="_blank"><span lang="en-US">Liferay documentation</span></a><span lang="en-US"> for more detail. </span><span lang="x-IV_mathan">Now, let's proceed to deploy it to Liferay Portal.</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Deploy to Liferay Portal</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">First of all, start
the Liferay portal server, if not yet! </span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyEh-ZbjchLI9lL3gFsLJvMKfEQoDxsKhBZzOsAw7dYFVoJdIdd09RI8pF8pTI3jD_KA_sEIKfmzoYa8Gpg2gwHoXoWw2ba_Ov7iRHri9xeBE3S5YNqCpdYTMPp6fWv6IjJX50xu78tfdq/s1600/lp7-gsg-liferay-hello-world-portlet-module-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="97" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyEh-ZbjchLI9lL3gFsLJvMKfEQoDxsKhBZzOsAw7dYFVoJdIdd09RI8pF8pTI3jD_KA_sEIKfmzoYa8Gpg2gwHoXoWw2ba_Ov7iRHri9xeBE3S5YNqCpdYTMPp6fWv6IjJX50xu78tfdq/s400/lp7-gsg-liferay-hello-world-portlet-module-3.png" width="400" /></a></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">IDE's "Liferay
Workspace" perspective has "Gradle Tasks" view (Gradle is build
tool, in case you don't know). Just click "deploy" option underneath
your module's build category. This should generate "<your-module>.<version>.jar"
file in "build/lib" folder underneath your module project folder
within workspace. Ideally, this step should automatically deploy this jar
bundle in locally running liferay portal on your machine (the way it happens in
"blade deploy" command), however, somehow it's not deploying to
liferay portal on my local setup! Therefore, I'll be showing how to deploy it
manually in next step.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6xsfmgJc62BHIotphJE9pxnHAnlajjDscpixZOgEmcXp2nfjRiZWVkDrxptjT5PmkU-MpDGkUhOWhW2txErCKhTohXuHqsx3DDIH7g1Okvi9aj_moKGTsVotW98bjS_QqT5-SwIs7fCjH/s1600/lp7-gsg-liferay-hello-world-portlet-module-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="142" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6xsfmgJc62BHIotphJE9pxnHAnlajjDscpixZOgEmcXp2nfjRiZWVkDrxptjT5PmkU-MpDGkUhOWhW2txErCKhTohXuHqsx3DDIH7g1Okvi9aj_moKGTsVotW98bjS_QqT5-SwIs7fCjH/s400/lp7-gsg-liferay-hello-world-portlet-module-4.png" width="400" /></a></div>
<div style="margin-left: .75in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">For manual
deployment, just copy the generated portlet's jar file into "deploy"
folder underneath the Liferay Portal Home folder. Then, this jar would
disappeared automatically from deploy folder within few seconds. In console,
you should see this message "… STARTED <your-portlet-module>
[bundle-id]". Actually, Liferay installs this jar underneath
"<TOMCAT_HOME>/osgi/modules" folder of Liferay Portal. See <a href="https://dev.liferay.com/discover/portal/-/knowledge_base/7-0/installing-apps-manually" rel="nofollow" target="_blank">documentation</a>
for more detail.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyW5kSxQIg_v8QJVcbEmiExdcGkzePE69joe6VR-v-JSf4zU64HhHeTwXMeyYU7Q7F8o7CvLCHT6Tu86J_IDxSpRgsX-D2Os42i4RTD6JXJohXjEuaaSHWeCcYRebsriYShyVamvEp0gkO/s1600/lp7-gsg-liferay-hello-world-portlet-module-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyW5kSxQIg_v8QJVcbEmiExdcGkzePE69joe6VR-v-JSf4zU64HhHeTwXMeyYU7Q7F8o7CvLCHT6Tu86J_IDxSpRgsX-D2Os42i4RTD6JXJohXjEuaaSHWeCcYRebsriYShyVamvEp0gkO/s400/lp7-gsg-liferay-hello-world-portlet-module-5.png" width="400" /></a></div>
<div style="margin-left: .75in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Add custom Portlet on Site
Page of Portal</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Login to Liferay
Portal as admin user. Add your hello world application on page (Add ->
Applications -> Sample -> add portlet application). Additionally, try few
text code changes in "view.jsp" file of hello world module and deploy
again to see how it goes. At the end, if you wish, you can easily
"Remove" custom portlet app from the page too.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixZuK9iyHQPUbnKHE_BAukYb1iGv_X_vktcuUIS3iKYdczJiZaW6EhkbT2dYw8fws_z-wUZYj6pUBLYqvZ2y5gPNKsoeZBxpSWDkrZdvr18P_JoDRCCcnVcofWFnbxTBzSta-myuKsYfJW/s1600/lp7-gsg-liferay-hello-world-portlet-module-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="127" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixZuK9iyHQPUbnKHE_BAukYb1iGv_X_vktcuUIS3iKYdczJiZaW6EhkbT2dYw8fws_z-wUZYj6pUBLYqvZ2y5gPNKsoeZBxpSWDkrZdvr18P_JoDRCCcnVcofWFnbxTBzSta-myuKsYfJW/s400/lp7-gsg-liferay-hello-world-portlet-module-6.png" width="400" /></a></div>
<div style="margin-left: .75in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Managing Liferay Modules
Projects Lifecycle</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Liferay 7.0
architecture offers modularity via OSGI. That means, different modules, so
called OSGI bundles, can have their own lifecycle to start, restart, stop, etc.
That can be managed using any of below options.</span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">"Gogo Shell" in
IDE. Right-click the started portal in server view and select Open
Gogo Shell. For example, one can see list of bundles containing
"hello" word using this command: lb -s | grep "hello".
See <a href="https://dev.liferay.com/develop/reference/-/knowledge_base/7-0/using-the-felix-gogo-shell" rel="nofollow" target="_blank">Gogo Shell commands documentation</a>.</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Liferay Administration.
Control Panel -> Apps -> App Manager. See <a href="https://dev.liferay.com/discover/portal/-/knowledge_base/7-0/managing-and-configuring-apps" rel="nofollow" target="_blank">documentation</a> for more detail.</span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_QUAyW-87EPTdNk3mJHZNTv-MzWnErCaE72UjAto_ZKkOe74qcw0Tlt0sH9GWVdC1jHdQnsMUhkDrN4uhabf9fd3sm0ieMgLZWJrGHYhfE5z-Q5IyDzo84XfqcMtPTAD0amEQ5vafvBWU/s1600/lp7-gsg-liferay-hello-world-portlet-module-7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="196" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_QUAyW-87EPTdNk3mJHZNTv-MzWnErCaE72UjAto_ZKkOe74qcw0Tlt0sH9GWVdC1jHdQnsMUhkDrN4uhabf9fd3sm0ieMgLZWJrGHYhfE5z-Q5IyDzo84XfqcMtPTAD0amEQ5vafvBWU/s400/lp7-gsg-liferay-hello-world-portlet-module-7.png" width="400" /></a></div>
<div style="margin-left: .75in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">What's next?</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">As an alternate
tooling of Liferay IDE, you may try <a href="https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/blade-cli" rel="nofollow" target="_blank">Blade CLI tool for hello world liferay mvc portlet module development and deployment to Liferay Portal</a>!</span></div>
<br />
<ol style="direction: ltr; margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="1">
<li style="margin-bottom: 0px; margin-top: 0px; vertical-align: middle;" value="1"><span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/installing-blade-cli" rel="nofollow" target="_blank">Install Blade CLI</a>.</span></li>
<li style="margin-bottom: 0px; margin-top: 0px; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/creating-a-liferay-workspace-with-blade-cli" rel="nofollow" target="_blank">Create Workspace</a>:<span style="font-weight: bold;"> blade init
<workspace-name></span></span></li>
<li style="margin-bottom: 0px; margin-top: 0px; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/using-the-mvc-portlet-template" rel="nofollow" target="_blank">Create Hello World MVC Portlet Application as a Liferay Module</a>: <span style="font-weight: bold;">blade create -t mvcportlet -p
[package name] -c [class name] [project name]</span></span></li>
<li style="margin-bottom: 0px; margin-top: 0px; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">At this stage, you would have
Gradle based project structure and initial code. Do necessary code changes
using your choice of IDE.</span></li>
<li style="margin-bottom: 0px; margin-top: 0px; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Ensure local liferay portal
instance is running on your machine. <a href="https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/managing-module-projects-with-blade-cli" rel="nofollow" target="_blank">Deploying Module to Liferay Portal</a>: <span style="font-weight: bold;">blade deploy</span></span></li>
<li style="margin-bottom: 0px; margin-top: 0px; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Add application on site page
by logging to liferay portal as admin user</span></li>
</ol>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-48341769111419651452016-09-25T16:11:00.001+05:302016-09-25T16:11:44.869+05:30Liferay Portal 7 - Getting Started Guide - Basic setup of Liferay IDE<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">This post is part of
<a href="http://tirthalpatel.blogspot.com/2016/09/liferay-portal-7-getting-started-guide-series.html" target="_blank">Liferay Portal 7 Getting Started Guide Series</a>.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">It's time to<span style="font-weight: bold;"> get started with Liferay IDE</span> setup by
following below quick steps<span style="font-weight: bold;">. </span>This post is
for you - if you are new to Liferay Portal, but you already have experience
with Java development using Eclipse. </span></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Prerequisite</span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0px; margin-top: 0px; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://tirthalpatel.blogspot.com/2016/09/liferay-portal-7-ggs-liferay-portal-setup.html" target="_blank">Liferay Portal 7 Setup</a></span></li>
</ul>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Download</span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="https://sourceforge.net/projects/lportal/files/Liferay%20IDE/" rel="nofollow" target="_blank">Liferay IDE Eclipse</a> - Download latest. For
example, 3.0.0
GA1/liferay-ide-eclipse-windows-x64-3.0.0-ga1-201604280251.zip. </span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="https://sourceforge.net/projects/lportal/files/Liferay%20Portal/" rel="nofollow" target="_blank">Liferay Source and Doc</a> - Go to latest "7.0.x
GA" version folder and download source and documentation files. For
example, I downloaded
"liferay-portal-src-7.0-ce-ga1-20160331161017956.zip" and
"liferay-portal-doc-7.0-ce-ga1-20160513171934176.zip" from
"7.0.0 GA1" folder. [This
is indeed optional, but always good to attach in IDE for quick reference
during development]</span></li>
</ul>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Basic Setup of Liferay
Portal IDE</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold; text-decoration: underline;">Unzip Liferay IDE and Open</span>:
First of all, unzip the downloaded "Liferay IDE" and open it using
"eclipse.exe". You can see, it opens in "Liferay Workspace"
perspective by default. In case, you consider to develop older WAR-style
plugins using Liferay Plugins SDK, then you can switch to "Liferay"
perspective.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9PpPC1mw94ptyirRdHXr2zjLbAPtmWaFzGiZJdYRo-62jtpT74qL8_eAHxMpY16A-uScadXsCo79zf0Z5q_7Gh_Y8tMU25Eqz1xOKWc8GkHPZ6_s6YOTHjEFFfdRYMep0uVNPQdfD_T01/s1600/lp7-gsg-liferay-ide-setup-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="178" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9PpPC1mw94ptyirRdHXr2zjLbAPtmWaFzGiZJdYRo-62jtpT74qL8_eAHxMpY16A-uScadXsCo79zf0Z5q_7Gh_Y8tMU25Eqz1xOKWc8GkHPZ6_s6YOTHjEFFfdRYMep0uVNPQdfD_T01/s400/lp7-gsg-liferay-ide-setup-1.png" width="400" /></a></div>
<div style="margin-left: .75in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold; text-decoration: underline;">Add Liferay Portal server in
IDE and Start</span><span style="font-weight: bold;">: </span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">New Liferay Server ->
Liferay 7.x -> Specify Liferay Portal Directory + Ensure to add
"JDK 8" instead of default JRE here (If you keep JRE 8 here, you
may face issues later on, for example, Server Administration in Control
Panel will complain to replace JRE with JDK) -> Finish.</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">This would create Liferay
server in IDE and show "portal-ext.properties" (which you
created during liferay portal setup) underneath created liferay server. </span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Start Liferay portal server
and wait until you see "server start up in x ms" message in
console. (*** <span style="text-decoration: underline;">Important note</span>: Ensure you don't have liferay instance already
running outside Liferay IDE, otherwise you would get port conflict issue)</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Awesome, now you should be
able to see Liferay portal (<a href="http://localhost:8080/" rel="nofollow" target="_blank">http://localhost:8080/</a>) in the browser.</span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyxUI39n6fNLr76wDUGq6L109IGaf5er7wnmZZ0yWzoPH3YZevAFb_PS1Kdtgnrn9K5UUgXO-rs43hR1pd8EZ2w6Hs8Q1JQXOYnMd9BjC6LLCB-34eb4wZPn9_HlKmtZ9Kk61nSKyLwyBU/s1600/lp7-gsg-liferay-ide-setup-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyxUI39n6fNLr76wDUGq6L109IGaf5er7wnmZZ0yWzoPH3YZevAFb_PS1Kdtgnrn9K5UUgXO-rs43hR1pd8EZ2w6Hs8Q1JQXOYnMd9BjC6LLCB-34eb4wZPn9_HlKmtZ9Kk61nSKyLwyBU/s400/lp7-gsg-liferay-ide-setup-2.png" width="400" /></a></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Refer <a href="https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/installing-liferay-ide" rel="nofollow" target="_blank">Liferay IDE documentation</a> for more detail.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Optional Bonus Tips</span></span></div>
<div style="color: #c00000; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold; text-decoration: underline;">Managing Liferay Module
Projects in Liferay IDE</span><span style="font-weight: bold;">: </span>Liferay
7.0 architecture offers modularity via OSGI. That means, different modules, so
called OSGI bundles, can have their own lifecycle to start, restart, stop, etc.
That can be managed using "Gogo Shell" in IDE. Right-click the
started portal in server view and select Open Gogo Shell. For example, one
can see list of bundles containing "hello" word using this command -
lb -s | grep "hello". See <a href="https://dev.liferay.com/develop/reference/-/knowledge_base/7-0/using-the-felix-gogo-shell" rel="nofollow" target="_blank">Gogo Shell commands documentation</a>.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwKSwJrWUhC9aPDEOLf9z2auoX9kPU5Nh5MrhkgJY-KlN0blwtUtFPOnkB5ScCLnYvpJjcCr9Xikh3_eIvTuUIawZlS_d9xHx-4Baepx7iWP2EbVq8JfZeuDi-zyH8jiXAZP-zB_uM9Pa5/s1600/lp7-gsg-liferay-ide-setup-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwKSwJrWUhC9aPDEOLf9z2auoX9kPU5Nh5MrhkgJY-KlN0blwtUtFPOnkB5ScCLnYvpJjcCr9Xikh3_eIvTuUIawZlS_d9xHx-4Baepx7iWP2EbVq8JfZeuDi-zyH8jiXAZP-zB_uM9Pa5/s400/lp7-gsg-liferay-ide-setup-3.png" width="383" /></a></div>
<div style="color: #c00000; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold; text-decoration: underline;">Import Liferay Portal Source
Code in Liferay IDE</span><span style="font-weight: bold;">: </span>Unzip
download liferay portal source code and import it in IDE (File -> Import
-> General -> Existing Project into Workspace). This would enable you to
refer liferay portal code during development, if require.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-MXZRHO3wjoI/V-eYYnJ6LbI/AAAAAAAACTA/hGi_ghEkY9ExJRCFQIShI_1q8NjSAXJgQCPcB/s1600/lp7-gsg-liferay-ide-setup-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://1.bp.blogspot.com/-MXZRHO3wjoI/V-eYYnJ6LbI/AAAAAAAACTA/hGi_ghEkY9ExJRCFQIShI_1q8NjSAXJgQCPcB/s640/lp7-gsg-liferay-ide-setup-4.png" width="224" /></a></div>
<div style="margin-left: .75in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-weight: bold; text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Install InstaSearch Plugin
in Liferay IDE</span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Help -> Eclipse
Marketplace -> Search "InstaSearch" -> Install. After
installing this plugin, when you restart IDE for the first time, it would
take 5-10 minutes to index all projects which are open in IDE. </span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Window -> Show View ->
Other -> General - InstaSearch -> Add in the perspective. Start
using this plugin for doing keywords based code search. For example, I
want to see where is "ElasticSearch" related code in whole
portal's codebase! Well, just ask InstaSearch and get the answer. Really
super useful plugin. </span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiLhKVvd58GZMlYts2bYAC1q6P9JAozEAXc4XgXX6DRM44FicqSpmLdwgGnU_bVwofcmuc3l1-Vde9RF0AF7G4AzgtYe1SgguDSjuY01uB0dpWsVjNx9Jk1-JAPWCCj6SBorzWX36-9AEx/s1600/lp7-gsg-liferay-ide-setup-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="276" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiLhKVvd58GZMlYts2bYAC1q6P9JAozEAXc4XgXX6DRM44FicqSpmLdwgGnU_bVwofcmuc3l1-Vde9RF0AF7G4AzgtYe1SgguDSjuY01uB0dpWsVjNx9Jk1-JAPWCCj6SBorzWX36-9AEx/s400/lp7-gsg-liferay-ide-setup-5.png" width="400" /></a></div>
<div style="margin-left: .75in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">What's next?</span></span></div>
<br />
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Let's get started
with <span style="color: red;"><a href="http://tirthalpatel.blogspot.com/2016/09/liferay-portal-7-ggs-hello-world-portlet-module.html" target="_blank">Liferay IDE for hello world liferay mvc portlet module development and deployment to Liferay Portal</a></span>!</span></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-68857872879601236872016-09-25T16:11:00.000+05:302016-09-25T16:11:08.132+05:30Liferay Portal 7 - Getting Started Guide - Development Tooling Options<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">This post is part of
<a href="http://tirthalpatel.blogspot.com/2016/09/liferay-portal-7-getting-started-guide-series.html" target="_blank">Liferay Portal 7 Getting Started Guide Series</a>.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">In previous post, I
wrote <span style="color: red;"><a href="http://tirthalpatel.blogspot.com/2016/09/liferay-portal-7-ggs-liferay-portal-setup.html" target="_blank">steps to setup Liferay portal</a></span>. What's
next? Obviously, just Liferay's out-of-box features or functionality could not
be sufficient to accomplish given business use cases. Do you have requirements
of customizing liferay provided functionality (via various configuration
options or implementing hook plugins) or incorporating custom developed liferay
plugins or modules into Liferay portal (in form of portlets, themes, etc.)?
Then, let's look at liferay development tooling options.<span style="font-weight: bold;"> </span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Liferay Development Tooling
Options</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Liferay supports
different development tooling options. If you are newbie to Liferay, then don't
get confused. Below is crux of <a href="https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/tooling" rel="nofollow" target="_blank">Liferay Tooling documentation</a>. </span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold;">Liferay IDE</span>: If you are accustomed to
use Eclipse IDE, go for this option. Here,</span></li>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="circle">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Liferay Plugin project = Ant
/ Maven build type. (*** Refer few quick pointers further on this)</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Liferay Module Project =
Gradle build type.</span></li>
</ul>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold;">Blade CLI</span>: If you love to use command
line tools and want freedom to create projects that can be used with any
IDE or development environment, then go for this option. In short, this is
a command line tool bootstrapped on to a Gradle based environment that is
used to build Liferay 7.0 modules. </span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold;">Liferay
Workspace</span>: A
generated environment that is built to hold and manage your Liferay
projects, which can be created using both tooling options Liferay IDE as
well as Blade CLI. This is the official way to develop newly introduced
Liferay 7.0 way of modules using Gradle. At the same time, it also
supports older way of developing WAR-style plugins using the Liferay Ant
based Plugins SDK.</span></li>
</ul>
<div style="margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Few Quick Pointers</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">At the time of
writing this post, following are key pointers to choose development strategy
for Liferay 7.</span></div>
<div style="margin: 0in;">
<br /></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Are you looking for <a href="https://dev.liferay.com/develop/tutorials/-/knowledge_base/6-2/maven" rel="nofollow" target="_blank">old WAR style plugins development (i.e. portlets, themes, hooks, etc.) using Maven</a>, which works greatly with
Liferay 6.2? Well, latest Liferay IDE has option to create Maven based
plugin project (Liferay New Plugin Project -> Build Type = Maven), but
not working as expected. (<a href="https://web.liferay.com/community/forums/-/message_boards/message/74998137" rel="nofollow" target="_blank">for example</a>). Because sadly mavens
plugins sdk is not available yet for Liferay 7. In fact, I downloaded <a href="https://sourceforge.net/projects/lportal/files/Liferay%20Portal/" rel="nofollow" target="_blank">Liferay Maven Artifacts for Liferay 7</a>
version (e.g. liferay-portal-maven-7.0-ce-ga1-20160331161017956.zip) and
installed it in local maven repository, but that also didn't work. So
check maven central repository for latest update, before spending time to
try Liferay Maven Plugins with Liferay 7. </span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-jhzvUO1HmP8/V-eYYgqkXeI/AAAAAAAACTA/iWP7a7vIM3ccPRo_pkifjA-Dqq1T9xczgCPcB/s1600/lp7-gsg-liferay-dev-tooling-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://1.bp.blogspot.com/-jhzvUO1HmP8/V-eYYgqkXeI/AAAAAAAACTA/iWP7a7vIM3ccPRo_pkifjA-Dqq1T9xczgCPcB/s400/lp7-gsg-liferay-dev-tooling-1.png" width="400" /></a></div>
<div style="margin-left: .75in; margin: 0in;">
<br /></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Are you looking for <a href="https://dev.liferay.com/develop/tutorials/-/knowledge_base/6-2/plugins-sdk" rel="nofollow" target="_blank">old WAR style plugins development (i.e. portlets, themes, hooks, etc.) using Liferay Ant Plugins SDK</a>? Well,
Liferay IDE has option to create Maven based plugin project (Liferay New
Plugin Project -> Build Type = Ant) or even new <a href="https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/liferay-workspace" rel="nofollow" target="_blank">Liferay Workspace approach support to use Plugin SDK</a> in Liferay 7. Although, Liferay 7 documentation is not
available on this, you should be able to use it as per traditional
approach of Liferay 6.2. Ensure to download <a href="https://sourceforge.net/projects/lportal/files/Liferay%20Portal/" rel="nofollow" target="_blank">Liferay Plugins SDK for Liferay 7</a>
version (e.g. liferay-plugins-sdk-7.0-ce-ga1-20160331161017956.zip) and
use it while creating Liferay Plugin Project. I quickly created MVC
portlet and Service build app using Liferay Plugins and could deploy to
Liferay 7 without issue.</span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBv_H6zc_YB9tj77Q3MVLskk5e8HeEs5E3FEkZhNXdTUudb-0u6QnRzNAP6S1BhTSK-3TY4Ts9VgjUL72sQf0GLugsEVPCzc4QiuxztDUkVr1HKAm8X2oHcwGYSRWAve4ecVHjx_RFiBE9/s1600/lp7-gsg-liferay-dev-tooling-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBv_H6zc_YB9tj77Q3MVLskk5e8HeEs5E3FEkZhNXdTUudb-0u6QnRzNAP6S1BhTSK-3TY4Ts9VgjUL72sQf0GLugsEVPCzc4QiuxztDUkVr1HKAm8X2oHcwGYSRWAve4ecVHjx_RFiBE9/s400/lp7-gsg-liferay-dev-tooling-2.png" width="347" /></a></div>
<div style="margin-left: .75in; margin: 0in;">
<br /></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/whats-changed-and-what-hasnt" rel="nofollow" target="_blank">Liferay 7 Modular Architecture</a>
silently demands to understand new fundamentals like creating Workspace
project and Modules using Liferay IDE or Blade CLI tooling.</span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwTG3OERhb01Kg24Qat5XKmmuwLnCWxN8bgwz77R9JX0vnwjNx8wwkU2W_OfyDRm_4LWBQZFJRkJ8TqNLUHaf9FkbcF11HArcSiQtM1lQvmuwzzgpKH9NEYUXInk86-9UXf5fdLHhgDv2J/s1600/lp7-gsg-liferay-dev-tooling-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwTG3OERhb01Kg24Qat5XKmmuwLnCWxN8bgwz77R9JX0vnwjNx8wwkU2W_OfyDRm_4LWBQZFJRkJ8TqNLUHaf9FkbcF11HArcSiQtM1lQvmuwzzgpKH9NEYUXInk86-9UXf5fdLHhgDv2J/s400/lp7-gsg-liferay-dev-tooling-3.png" width="400" /></a></div>
<div style="margin-left: .75in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">What's next?</span></span></div>
<br />
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Why not to get
started with <span style="color: red;"><a href="http://tirthalpatel.blogspot.com/2016/09/liferay-portal-7-ggs-liferay-ide-setup.html" target="_blank">basic setup of Liferay IDE</a></span> followed
by <span style="color: red;"><a href="http://tirthalpatel.blogspot.com/2016/09/liferay-portal-7-ggs-hello-world-portlet-module.html" target="_blank">hello world liferay mvc portlet module developmentusing Liferay IDE and deployment to Liferay Portal</a></span>!</span><span style="font-family: "calibri";"> </span></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com1tag:blogger.com,1999:blog-5763268233914970621.post-2462146303879036792016-09-25T16:10:00.000+05:302016-09-25T16:10:36.985+05:30Liferay Portal 7 - Getting Started Guide - Liferay Portal Setup<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">This post is part of
<a href="http://tirthalpatel.blogspot.com/2016/09/liferay-portal-7-getting-started-guide-series.html" target="_blank">Liferay Portal 7 Getting Started Guide Series</a>. </span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">It's time to<span style="font-weight: bold;"> get started with Liferay Portal setup</span> by
following below quick steps<span style="font-weight: bold;">.</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Environment</span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Windows 7 [***<span style="text-decoration: underline;">NOTE</span> - I have used mentioned
environment, but similar steps should work even if you use different OS]</span></li>
</ul>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Software Requirements</span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Install JDK 1.8 or later
(Liferay portal setup can run with JRE, but better to install JDK as it
will be required for development environment)</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Install MySQL or choice of
Liferay supported database (This is optional, but good to have for
development environment. At the same time, if you want to setup liferay
portal just for quick demo or trial purpose, then you can skip database
setup)</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="https://sourceforge.net/projects/lportal/files/Liferay%20Portal/" rel="nofollow" target="_blank">Liferay Portal Download</a> - Go to latest "7.0.x
GA" version folder and download "liferay portal bundled with
tomcat / wildfly as per your choice". For example,
liferay-portal-tomcat-7.0-ce-ga1-20160331161017956.zip /
liferay-portal-wildfly-7.0-ce-ga1-20160331161017956.zip. </span></li>
</ul>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Setup Liferay Portal</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold; text-decoration: underline;">Unzip Liferay Portal</span>:
First of all, unzip downloaded liferay portal bundled with *tomcat* or
*wildfly*. For example, I used
"liferay-portal-tomcat-7.0-ce-ga1-20160331161017956.zip" to unzip it.
Then, create "portal-ext.properties" file in its home folder.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-qIYY_AuAqZA/V-eYYpWDdAI/AAAAAAAACTA/YKcJXzuMWK4zsWuZfer-Cju4jCdaMhN7wCPcB/s1600/lp7-gsg-liferay-portal-setup-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="288" src="https://4.bp.blogspot.com/-qIYY_AuAqZA/V-eYYpWDdAI/AAAAAAAACTA/YKcJXzuMWK4zsWuZfer-Cju4jCdaMhN7wCPcB/s400/lp7-gsg-liferay-portal-setup-1.png" width="400" /></a></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold; text-decoration: underline;">Database configuration for
Liferay Portal (Optional, but recommended)</span>: By default it comes with
embedded "HSQL" database. However, I recommend to configuration it to
use your choice of database such as MySQL (Liferay supports range of databases,
but for exact supported version you need to refer "Liferay support
matrix") for development purpose. Still if you want to setup liferay
portal just for demo or trial purpose, then you can skip this step. If you skip
database configuration, liferay considers default "HSQL" database to
persist in "data" folder.</span></div>
<div style="margin: 0in 0in 0in 0.375in;">
<br /></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Choose a database server and
create a new database, for example I created "lportal-70-ce-ga1"
database in MySQL. Here, (i) <span style="background: white; color: #333333;">Create a blank database
encoded with the character set UTF-8. Liferay Portal is a multilingual
application and needs UTF-8 encoding to display all of its supported
character sets. (ii) Create a database user for accessing this database.
Grant this database user all rights, including the rights to create and
drop tables, to the blank Liferay database.</span></span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-O1GbzAgcKRM/V-eYYizCuMI/AAAAAAAACTA/7PU9TPmSeFEilY3ciTMqKz9pfNi__gu1gCPcB/s1600/lp7-gsg-liferay-portal-setup-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="274" src="https://1.bp.blogspot.com/-O1GbzAgcKRM/V-eYYizCuMI/AAAAAAAACTA/7PU9TPmSeFEilY3ciTMqKz9pfNi__gu1gCPcB/s320/lp7-gsg-liferay-portal-setup-2.png" width="320" /></a></div>
<div style="margin: 0in 0in 0in 0.75in;">
<br /></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Then, ensure to do correct
database configuration in portal-ext.properties file (as per <a href="https://dev.liferay.com/discover/reference/-/knowledge_base/7-0/database-templates" rel="nofollow" target="_blank">liferay database template</a>). The created database name
must match in "jdbc.default.url" value of portal-ext.properties
file. Add respective database driver jar file underneath Liferay Portal @
"$TOMCAT_HOME/lib/ext" or
"$WILDFLY_HOME/modules/com/liferay/portal/main" folder, if
doesn't exist there already. </span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSexSMAUj5tPvRBnPvDGWxKAQcIzt9BaxoKPSh5SP-_KUHEa84i_zoxi0q_85ua7QAfskzw_lkTcmaNVXIDWfyyxU_7yYnxtdr0vFz_TVSFS25l16dM1agwbDZwQW2eqL8QyBsE020TT7T/s1600/lp7-gsg-liferay-portal-setup-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="115" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSexSMAUj5tPvRBnPvDGWxKAQcIzt9BaxoKPSh5SP-_KUHEa84i_zoxi0q_85ua7QAfskzw_lkTcmaNVXIDWfyyxU_7yYnxtdr0vFz_TVSFS25l16dM1agwbDZwQW2eqL8QyBsE020TT7T/s400/lp7-gsg-liferay-portal-setup-3.png" width="400" /></a></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold; text-decoration: underline;">Start Liferay Portal</span>:
Now, start liferay portal for the first time by executing script in
"bin" of tomcat/wildfly and . For example, run
"Liferay/tomcat/bin/startup.bat". Liferay automatically starts
creating required table and some initial setup stuff. Wait… wait… for 5-10
minutes. You should not get any exception, when liferay is doing its first time
setup stuff. At the end, you should see "server start up in x ms"
message and it would open Liferay's setup wizard (<a href="http://localhost:8080/" rel="nofollow" target="_blank">http://localhost:8080/</a>) in the browser. </span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHTv2R9r3Zy1FVhqeyQbNfYPDiErUoeTQqdOnClDRfj5SAfqYF5RhPA0kFktPl8PgXAsTu7WGo-a7r8IYlRTHjX97X8TqZo9ZkUuHtclqgkinG7-_WYk_oF8e21vAwzmOvMhMvdRNumMGz/s1600/lp7-gsg-liferay-portal-setup-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHTv2R9r3Zy1FVhqeyQbNfYPDiErUoeTQqdOnClDRfj5SAfqYF5RhPA0kFktPl8PgXAsTu7WGo-a7r8IYlRTHjX97X8TqZo9ZkUuHtclqgkinG7-_WYk_oF8e21vAwzmOvMhMvdRNumMGz/s640/lp7-gsg-liferay-portal-setup-4.png" width="579" /></a></div>
<div style="margin-left: .75in; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold; text-decoration: underline;">Finish Liferay Setup Wizard
and Restart Portal</span>: Finally, in Liferay's setup wizard, click
"Finish Configuration" button followed by restarting the portal as
per the liferay instruction. To restart, stop running startup process (CTL+C)
and run it again. Again, wait for 5 minutes or so. At the end, you should see "server start
up in x ms" message and it would open Liferay portal (<a href="http://localhost:8080/" rel="nofollow" target="_blank">http://localhost:8080/</a>) in the browser. (*<span style="text-decoration: underline;">Note</span>: If you refresh you database, you
should see that Liferay would have created required tables along with initial
data.)</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz2lFbZAJUjfR1wwmv_9v3FJu8Pstm4xgJ7DctGeokPUK9PAxe6hSI6hquryqITO91JBcYS9V7R-HK03n74e8BV6cXzNyg6UZzRb-hxUROrRhBJzHLHnDDPhwpSG3Z7RsOkayubEbNE7Iz/s1600/lp7-gsg-liferay-portal-setup-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz2lFbZAJUjfR1wwmv_9v3FJu8Pstm4xgJ7DctGeokPUK9PAxe6hSI6hquryqITO91JBcYS9V7R-HK03n74e8BV6cXzNyg6UZzRb-hxUROrRhBJzHLHnDDPhwpSG3Z7RsOkayubEbNE7Iz/s640/lp7-gsg-liferay-portal-setup-5.png" width="480" /></a></div>
<div style="margin: 0in 0in 0in 0.75in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold; text-decoration: underline;">Start Exploring Liferay
Portal</span>: Congratulations, you are done with liferay portal setup.
"Sign In" using "username / password" as default
"test@liferay.com / test" admin user. On first login, it asks for
agreement and changing password. Just start playing with <a href="https://dev.liferay.com/discover/portal" rel="nofollow" target="_blank">out-of-box features of liferay portal as per user guide</a>. For example, you can add application or content
on given page (i.e. Add -> Search "Blogs" -> Click
"Add" of "Blogs"), create new pages (Menu -> Liferay
-> Navigation -> Public Pages -> Add Public Page), control panel for
portal configuration or managing users / sites / apps, etc.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1CFAJzgaavjlBKEjtx0L0ysK2avRAt8oISuFmSCY6PZUomq73pL9Nwiz9ftaLbnOdK3OrY3F02r8eMobUVhkPhZHoDsQwzP3odYIN0m0aJ5dQhit3uFsipUcmNjL8647e1FtnJx9EwyO1/s1600/lp7-gsg-liferay-portal-setup-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="117" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1CFAJzgaavjlBKEjtx0L0ysK2avRAt8oISuFmSCY6PZUomq73pL9Nwiz9ftaLbnOdK3OrY3F02r8eMobUVhkPhZHoDsQwzP3odYIN0m0aJ5dQhit3uFsipUcmNjL8647e1FtnJx9EwyO1/s400/lp7-gsg-liferay-portal-setup-6.png" width="400" /></a></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Refer <a href="https://dev.liferay.com/discover/deployment/-/knowledge_base/7-0/deploying-liferay-portal" rel="nofollow" target="_blank">liferay portal documentation</a> for more setup options. </span></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">What's next? </span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Obviously, just
Liferay's out-of-box features or functionality could not be sufficient to
accomplish given business use cases. Do you have requirements of customizing
liferay provided functionality (via various configuration options or
implementing hook plugins) or incorporating custom developed liferay plugins
into Liferay portal (in form of portlets, themes, etc.)? Then, let's get
started with understanding <span style="color: red;"><a href="http://tirthalpatel.blogspot.com/2016/09/liferay-portal-7-ggs-development-tooling-options.html" target="_blank">liferay development tooling options</a>.</span></span></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-24590411866641275142016-09-18T14:45:00.002+05:302016-09-18T14:45:22.322+05:30How to use Bootstrap CSS with Webpack in Angular 2 Seed Project?<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="margin: 0in; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">Being highly
experienced Java architect-cum-programmer, having just fundamental knowledge of
front-end technologies (i.e. HTML, CSS, JavaScript, jQuery, Jasmine, Bower,
Grunt, Node.js, etc.), arbitrarily I thought to get my hands dirty with Angular
(so called Angular 2.0 at present) and Bootstrap @ <a href="https://github.com/tirthalpatel/Learning-FET/tree/master/gs-angular/gs-angular2-app" rel="nofollow" target="_blank">https://github.com/tirthalpatel/Learning-FET/tree/master/gs-angular/gs-angular2-app</a>.
</span></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div style="margin: 0in; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">After going through <a href="https://angular.io/docs/ts/latest/guide/architecture.html" rel="nofollow" target="_blank">Angular Architecture Overview</a>, I thought to
give it a try with Bootstrap CSS. So I decided to take "<a href="https://github.com/angular/angular2-seed" rel="nofollow" target="_blank">angular2-seed</a>" project
and start from there. This decision really enabled me to play with few Angular
syntax and fundamentals quickly. However, a real struggle started, when it came
to incorporate Bootstrap CSS into the project. Firstly, I just added bootstrap
css {<link href="css/bootstrap.min.css" rel="stylesheet"
media="screen">} in index.html as per traditional approach and it
didn't work. After spending few hours, I
could realize Angular 2 seed project uses <a href="http://webpack.github.io/docs/what-is-webpack.html" rel="nofollow" target="_blank">Webpack</a>. Then,
google helped me to find <a href="http://blog.theodybrothers.com/2015/07/how-to-use-bootstrap-css-only-and.html" rel="nofollow" target="_blank">how to use Bootstrap (CSS only) and Webpack!</a> Finally, I could incorporate
Bootstrap CSS in Angular 2 seed project with further trail-and-error approach
as per below steps.</span></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div style="color: #333333; margin: 0in; text-align: left;">
<span style="background: white; font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">(1) package.json: added bootstrap,
babel-core, babel-loader, css-loader, file-loader, style-loader and url-loader
dependencies</span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqDpxCWrCpauQ8zZh8hXIEUAKgBmW8cQMcbGABx2JZZxQ4z-3rU0OzGxi1kHqJk4GbYrcT47dNli6nDsuTVLloiuw_HyPczp4WdyOkc_4TzMGYu-1ZAp4eU7pLo1_Z2LAYADrccati082j/s1600/AngularWebpack-Bootstrap-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Arial, Helvetica, sans-serif;"><img border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqDpxCWrCpauQ8zZh8hXIEUAKgBmW8cQMcbGABx2JZZxQ4z-3rU0OzGxi1kHqJk4GbYrcT47dNli6nDsuTVLloiuw_HyPczp4WdyOkc_4TzMGYu-1ZAp4eU7pLo1_Z2LAYADrccati082j/s400/AngularWebpack-Bootstrap-1.png" width="400" /></span></a></div>
<div style="color: #333333; margin: 0in; text-align: left;">
<br /></div>
<div style="color: #333333; margin: 0in; text-align: left;">
<span style="background: white; font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">(2) webpack.config.js: added loaders
configuration in module of webpackConfig</span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4cVD_DQYhG61LLb4GDi-_pUkdONHNonLiGkl-60coZlPsbY8fbUZn606zxrMNibGddlkQ4UL3u7RE5ARa4Hg0-ZLWqpHCUqjhxT62IhmbZY7GEHIuHghxQWoWaUFC7OGviEtoUwsxTwqR/s1600/AngularWebpack-Bootstrap-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Arial, Helvetica, sans-serif;"><img border="0" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4cVD_DQYhG61LLb4GDi-_pUkdONHNonLiGkl-60coZlPsbY8fbUZn606zxrMNibGddlkQ4UL3u7RE5ARa4Hg0-ZLWqpHCUqjhxT62IhmbZY7GEHIuHghxQWoWaUFC7OGviEtoUwsxTwqR/s400/AngularWebpack-Bootstrap-2.png" width="400" /></span></a></div>
<div style="color: #333333; margin: 0in; text-align: left;">
<br /></div>
<div style="color: #333333; margin: 0in; text-align: left;">
<span style="background: white; font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">(3) app.ts: imported bootstrap.css</span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg99DQdeax6XQrHwVQVekJfrEhauQ7R5_z8j3_ijm6ECGM_Hapy7_sJ0XCqDWH4oZ0p4HrVzXfMBhYEf9_S7ssxCG7vidHLzct0PQGHRv0n0abTDI8cqxs_aNfcPxoGZqZwCYkX6gQPPH90/s1600/AngularWebpack-Bootstrap-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Arial, Helvetica, sans-serif;"><img border="0" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg99DQdeax6XQrHwVQVekJfrEhauQ7R5_z8j3_ijm6ECGM_Hapy7_sJ0XCqDWH4oZ0p4HrVzXfMBhYEf9_S7ssxCG7vidHLzct0PQGHRv0n0abTDI8cqxs_aNfcPxoGZqZwCYkX6gQPPH90/s400/AngularWebpack-Bootstrap-3.png" width="400" /></span></a></div>
<div style="margin: 0in 0in 0in 0.375in; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div style="margin: 0in; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="text-decoration: underline;"><span style="color: #660000; font-size: large;">A POC project of Angular 2 +
Webpack + Bootstrap CSS</span></span> </span></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div style="margin: 0in; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">Source code @ <a href="https://github.com/tirthalpatel/Learning-FET/tree/master/gs-angular/angular2-webpack-bootstrap" rel="nofollow" target="_blank">https://github.com/tirthalpatel/Learning-FET/tree/master/gs-angular/angular2-webpack-bootstrap</a></span></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-5Tvm9ZVv4OGRB58Fz7GD9uWYXeVDPz1Uyk1xinrtBTuKsyrw7KT9TxsrIbXQ_QpVeupyNmIS_TekT7NoCFdRhcl2GDnxuk62S-aAq3uw58XbPljUVLdG0PfnuiVfdqdWacO0RvwKokU-/s1600/AngularWebpack-Bootstrap-4-Demo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Arial, Helvetica, sans-serif;"><img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-5Tvm9ZVv4OGRB58Fz7GD9uWYXeVDPz1Uyk1xinrtBTuKsyrw7KT9TxsrIbXQ_QpVeupyNmIS_TekT7NoCFdRhcl2GDnxuk62S-aAq3uw58XbPljUVLdG0PfnuiVfdqdWacO0RvwKokU-/s400/AngularWebpack-Bootstrap-4-Demo.png" width="400" /></span></a></div>
<div style="margin: 0in 0in 0in 0.375in; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div style="margin: 0in; text-align: left;">
<span style="text-decoration: underline;"><span style="color: #660000; font-family: Arial, Helvetica, sans-serif; font-size: large;">A demo project for getting
started with Angular 2 and trying its numerous features </span></span></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div style="margin: 0in; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">Source code @ <a href="https://github.com/tirthalpatel/Learning-FET/tree/master/gs-angular/gs-angular2-app" rel="nofollow" target="_blank">https://github.com/tirthalpatel/Learning-FET/tree/master/gs-angular/gs-angular2-app</a></span></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj756e6pcdo2tE2tbPea39eCYUUczZRYyehBUjiUrk3kJJFeykFMd8lZ_31p5ehOY_2pXkrb41T3TpaKEIX07lXT2XrTbQMwGn3P3-tG11OUq48iNfvXlKOd_-CLRrZhPMxkGp63V5i0Sec/s1600/AngularWebpack-Bootstrap-5-Demo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Arial, Helvetica, sans-serif;"><img border="0" height="245" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj756e6pcdo2tE2tbPea39eCYUUczZRYyehBUjiUrk3kJJFeykFMd8lZ_31p5ehOY_2pXkrb41T3TpaKEIX07lXT2XrTbQMwGn3P3-tG11OUq48iNfvXlKOd_-CLRrZhPMxkGp63V5i0Sec/s400/AngularWebpack-Bootstrap-5-Demo.png" width="400" /></span></a></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div style="text-align: left;">
</div>
<div style="margin: 0in; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">Refer README file
for instructions of running Angular app.</span></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-54302541136976425312016-06-25T19:42:00.000+05:302016-06-25T19:42:18.878+05:30Getting Started with Apache Camel using Spring Boot<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: Calibri; font-size: 11pt;">Well, I am not going
to write post to introduce Apache Camel and EIP concepts. Rather I'll just
provide quick highlights of the Spring Boot based project skeleton, which I
implemented to integrate </span><a href="http://hawt.io/" rel="nofollow" style="font-family: Calibri; font-size: 11pt;" target="_blank">hawtio</a><span style="font-family: Calibri; font-size: 11pt;"> and try it with </span><a href="http://camel.apache.org/" rel="nofollow" style="font-family: Calibri; font-size: 11pt;" target="_blank">Apache Camel</a><span style="font-family: Calibri; font-size: 11pt;"> @ </span><a href="https://github.com/tirthalpatel/Learning-Camel/tree/master/gs-camel-spring-boot-helloworld" rel="nofollow" style="font-family: Calibri; font-size: 11pt;" target="_blank">https://github.com/tirthalpatel/Learning-Camel/tree/master/gs-camel-spring-boot-helloworld</a><span style="font-family: Calibri; font-size: 11pt;">.
For promptly getting started with it, you should obviously know Maven, Java and
Spring (not necessarily Spring Boot).</span><br />
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<h2 style="font-family: Calibri; margin: 0in; text-align: left;">
<span style="font-weight: normal; text-decoration: underline;"><span style="color: #660000; font-size: large;">First Things First -
Understanding Fundamentals</span></span></h2>
<span style="font-family: Calibri;"><span style="font-size: 14.6667px;"><b><br /></b></span></span><ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt; font-weight: bold;">Apache Camel</span><span style="font-family: Calibri; font-size: 11.0pt;"> is an open-source,
lightweight, integration library that allows your applications to
accomplish intelligent routing, message transformation, and protocol
mediation using the established Enterprise Integration Patterns and
out-of-the-box components with a highly expressive Domain Specific
Language (Java, XML, or Scala). With Camel you can implement integration
solutions as part of an overarching ESB solution, or as individual routes
deployed to any container such as Apache Tomcat, Apache ServiceMix, JBoss
AS, or even a stand-alone java process. Read more @ </span><a href="https://dzone.com/refcardz/essential-camel-components" rel="nofollow" target="_blank"><span style="font-family: Calibri; font-size: 11.0pt;">DZone Refcard - Essential Camel Components</span></a><span style="font-family: Calibri; font-size: 11.0pt;">.</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt; font-weight: bold;">Enterprise
Integration Patterns (EIP)</span><span style="font-family: Calibri; font-size: 11.0pt;">: Integration is a hard problem. To help deal with the
complexity of integration problems the Enterprise Integration Patterns
(EIP) have become the standard way to describe, document and implement
complex integration problems. Apache Camel is an open source project for
implementing the EIP easily in a few lines of Java code or Spring XML
configuration. Read more @ </span><a href="https://dzone.com/refcardz/enterprise-integration" rel="nofollow" target="_blank"><span style="font-family: Calibri; font-size: 11.0pt;">DZone Refcard - The Top Twelve Integration Patterns for Apache Camel</span></a><span style="font-family: Calibri; font-size: 11.0pt;">.</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt; font-weight: bold;">Integration
Framework vs. ESB vs. Integration Suite</span><span style="font-family: Calibri; font-size: 11.0pt;">: See remarkable presentation by Kai Wähner @ </span><a href="http://www.slideshare.net/KaiWaehner/spoilt-for-choice-how-to-choose-the-right-enterprise-service-bus-esb" rel="nofollow" target="_blank"><span style="font-family: Calibri; font-size: 11.0pt;">Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?</span></a></li>
</ul>
<div style="font-family: Calibri; font-size: 11.0pt; margin-left: .375in; margin: 0in;">
<br /></div>
<div style="font-family: Calibri; margin: 0in;">
<span style="text-decoration: underline;"><span style="color: #660000; font-size: large;">Get Started with Apache
Camel Practically</span></span></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
If you don't know, what is <a href="http://projects.spring.io/spring-boot/" rel="nofollow" target="_blank">Spring Boot</a>, then immediately
read about it. Believe me, it has already become super popular in Java world.
Spring Boot nicely gels with Apache Camel too. Anyway you may get started with
Apache Camel by following below steps, even if you don't know Spring Boot.</div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<ol style="direction: ltr; font-family: Calibri; font-size: 11pt; margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="1">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;" value="1"><span style="font-size: 11pt;">Download or Clone "</span><a href="https://github.com/tirthalpatel/Learning-Camel" rel="nofollow" target="_blank"><span style="background: white; font-size: 12pt;">gs-camel-spring-boot-helloworld</span></a><span style="font-size: 11pt;">" project from Github.</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;">Prerequisites:</span></li>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="color: #333333; margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 12pt;">Java 1.8+</span></li>
<li style="color: #333333; margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 12pt;">Maven </span><span style="font-size: 12pt; font-style: italic;">(If maven
is not installed on your machine, then just use maven wrapper
"mvnw", which is already in project. Be aware that you may need
to configure proxy settings, if you are in restricted corporate network.)</span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="color: #333333; font-size: 12pt;">Spring STS or
alternate IDE </span><span style="color: #333333; font-size: 12pt; font-style: italic;">(Optional, but recommended)</span></li>
</ul>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;">Run maven command at
project's root to run project: gs-camel-spring-boot-helloworld ></span><span style="font-size: 11pt; font-weight: bold;"> mvn
spring-boot:run</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;">This would start Spring
Boot's embedded server on default 8080 port. In case you need to change it
to different port, then you can configure in
"application.properties" file at
"gs-camel-spring-boot-helloworld\src\main\resources". </span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;">Refer </span><a href="https://github.com/tirthalpatel/Learning-Camel/blob/master/gs-camel-spring-boot-helloworld/README.md" rel="nofollow" target="_blank"><span style="font-size: 11pt;">README file</span></a><span style="font-size: 11pt;"> to import project in IDE or
maven's alternative option to run it.</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;">Once you successfully run it,
you should see following logs without errors. Well, App.java does all
magic to provide Camel Context with help of Spring Boot.</span><span style="font-size: 11pt; font-style: italic;"> (</span><a href="http://camel.apache.org/getting-started.html" rel="nofollow" target="_blank"><span style="font-size: 11pt; font-style: italic;">Alternatively, we may write code for creating Camel Context without using Spring</span></a><span style="font-size: 11pt; font-style: italic;">.)</span></li>
</ol>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlYwosMsUwX_UJ9w-vB9-Vte5BT21a89ekBYDS33DBHwjkfCGpdwWvUeqNZe6-VyvVW63flHvvFjrBnJUlhVdK6vueJBFd-L-Gmds8DoW01Rb7kArT6eFxNZDIXPRwDvppHYSsb0zoO9FM/s1600/ApacheCamel-with-SpringBoot-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="158" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlYwosMsUwX_UJ9w-vB9-Vte5BT21a89ekBYDS33DBHwjkfCGpdwWvUeqNZe6-VyvVW63flHvvFjrBnJUlhVdK6vueJBFd-L-Gmds8DoW01Rb7kArT6eFxNZDIXPRwDvppHYSsb0zoO9FM/s400/ApacheCamel-with-SpringBoot-1.png" width="400" /></a></div>
<ol style="direction: ltr; font-family: Calibri; font-size: 11pt; margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="1">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;" value="7"><span style="font-size: 11pt;">Next, you can see logs for
executed example code of router configurations, which is using Camel Java
DSL.</span></li>
</ol>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK2NUjDu7QgpmTt0FElq0PoZNLQCjoY8T5XEtjVnabqjVs2EfjuSVBxk1JSInpXFWdQ_Q-DeKUcyuYQvCgLt60UucrX7KecCpCYzdJgXv8w61PxFANw4e7r9bH5rcFApRjFWAZTI7zVnXt/s1600/ApacheCamel-with-SpringBoot-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK2NUjDu7QgpmTt0FElq0PoZNLQCjoY8T5XEtjVnabqjVs2EfjuSVBxk1JSInpXFWdQ_Q-DeKUcyuYQvCgLt60UucrX7KecCpCYzdJgXv8w61PxFANw4e7r9bH5rcFApRjFWAZTI7zVnXt/s400/ApacheCamel-with-SpringBoot-2.png" width="400" /></a></div>
<ol style="direction: ltr; font-family: Calibri; font-size: 11pt; margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="1">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;" value="8"><span style="font-size: 11pt;">Then, open hawtio web console
in browser @ </span><a href="http://localhost:8080/hawtio/index.html" rel="nofollow" target="_blank"><span style="font-size: 11pt;">http://localhost:8080/hawtio/index.html</span></a><span style="font-size: 11pt;">, which I have already
integrated in the project. You can see
"HelloWorldRouterFirst.java" has timer component, which triggers
events and sends to "direct:helloWorldChannel" end-point. In
"HelloWorldRouterSecond.java", it route message from
"direct:helloWorldChannel" end-point to further. You can see,
"HelloWorldRouterFirst.java" has implemented "Deal Letter
Channel EIP". To try it practically, just pause or stop
"hw-ex1-second-router-direct-process-log" route and see how it
reacts. When "hw-ex1-second-router-direct-process-log" is
running, it does its job as per configuration in <span style="font-size: 14.6667px;">"HelloWorldRouterSecond.java"</span>. When "hw-ex1-second-router-direct-process-log" is unavailable
(paused or stopped), all events triggered by
"hw-ex1-first-router-timer-bean-direct" route would go to
"DeadHelloWorldQueue" queue automatically as per configured
Camel provided "Deal Letter Channel EIP".</span></li>
</ol>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4E_2dqY7BK9b0iexD8-SZcAMkRWGM1AAD3h_vsJfO89XQTVompmt6JKgDhvIeQRnS1zv6VWqb8H1QUMHeZ1LgNt4prHe6tNQxOxYb0DQQKGIcQwiXw0QBWmChaqJgjlWPqaR0xUiHap-t/s1600/ApacheCamel-with-SpringBoot-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="297" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4E_2dqY7BK9b0iexD8-SZcAMkRWGM1AAD3h_vsJfO89XQTVompmt6JKgDhvIeQRnS1zv6VWqb8H1QUMHeZ1LgNt4prHe6tNQxOxYb0DQQKGIcQwiXw0QBWmChaqJgjlWPqaR0xUiHap-t/s400/ApacheCamel-with-SpringBoot-3.png" width="400" /></a></div>
<ol style="direction: ltr; font-family: Calibri; font-size: 11pt; margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="1">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;" value="9"><span style="font-size: 11pt;">Likewise, following snapshot
speaks about another "HelloWorldJmsRouter.java" example router.</span></li>
</ol>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmKfZ1tTXTTrhOdblFt6NgROMYd_UiQLzr5n9iALB4EL25oBr_GQ2rg3G1Ipfx9SD4XtwH4avNSdgYpOEntC6e-x2cTfOQ6yBtuYMi0_-NpM88Xz0LCzZdBYJYL6rl0SIUk3mWjl5AJdW5/s1600/ApacheCamel-with-SpringBoot-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmKfZ1tTXTTrhOdblFt6NgROMYd_UiQLzr5n9iALB4EL25oBr_GQ2rg3G1Ipfx9SD4XtwH4avNSdgYpOEntC6e-x2cTfOQ6yBtuYMi0_-NpM88Xz0LCzZdBYJYL6rl0SIUk3mWjl5AJdW5/s400/ApacheCamel-with-SpringBoot-4.png" width="400" /></a></div>
<ol style="direction: ltr; font-family: Calibri; font-size: 11pt; margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="1">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;" value="10"><span style="font-size: 11pt;">Finally, you can </span><a href="https://github.com/tirthalpatel/Learning-Camel/tree/master/gs-camel-spring-boot-helloworld/src/main/java/com/tirthal/learning/camel/examples" rel="nofollow" target="_blank"><span style="font-size: 11pt;">implement few examples in similar way</span></a><span style="font-size: 11pt;"> using any </span><a href="http://camel.apache.org/dsl.html" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Camel supported DSL</span></a><span style="font-size: 11pt;"> and </span><a href="http://camel.apache.org/components.html" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Components</span></a><span style="font-size: 11pt;"> as per your interest. Just
ensure to annotate router component with @Component annotation, implement
camel's RouteBuilder and </span><a href="https://github.com/tirthalpatel/Learning-Camel/blob/master/gs-camel-spring-boot-helloworld/pom.xml" rel="nofollow" target="_blank"><span style="font-size: 11pt;">add necessary dependencies in Maven's pom.xml</span></a><span style="font-size: 11pt;">.</span><span style="font-size: 11pt; font-style: italic;"> (Read </span><a href="http://henryk-konsek.blogspot.in/2014/10/using-apache-camel-with-spring-boot.html" rel="nofollow" target="_blank"><span style="font-size: 11pt; font-style: italic;">Apache Camel with Spring Boot</span></a><span style="font-size: 11pt; font-style: italic;"> post to
understand how we get Camel context magically.)</span></li>
</ol>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div style="font-family: Calibri; margin: 0in;">
<span style="text-decoration: underline;"><span style="color: #660000; font-size: large;">Also Refer</span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://camel.apache.org/enterprise-integration-patterns.html" rel="nofollow" target="_blank"><span style="font-family: Calibri; font-size: 11.0pt;">http://camel.apache.org/enterprise-integration-patterns.html</span></a></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://camel.apache.org/tutorials.html" rel="nofollow" target="_blank"><span style="font-family: Calibri; font-size: 11.0pt;">http://camel.apache.org/tutorials.html</span></a></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="https://github.com/apache/camel/tree/master/examples" rel="nofollow" target="_blank"><span style="font-family: Calibri; font-size: 11.0pt;">https://github.com/apache/camel/tree/master/examples</span></a></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="https://github.com/camelinaction/camelinaction2" rel="nofollow" target="_blank"><span style="font-family: Calibri; font-size: 11.0pt;">https://github.com/camelinaction/camelinaction2</span></a></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="https://github.com/CamelCookbook/camel-cookbook-examples" rel="nofollow" target="_blank"><span style="font-family: Calibri; font-size: 11.0pt;">https://github.com/CamelCookbook/camel-cookbook-examples</span></a></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://henryk-konsek.blogspot.in/2014/10/using-apache-camel-with-spring-boot.html" rel="nofollow" target="_blank"><span style="font-family: Calibri; font-size: 11.0pt;">http://henryk-konsek.blogspot.in/2014/10/using-apache-camel-with-spring-boot.html</span></a></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://www.attuneww.com/publications/apache-camel-startup-guide.html" rel="nofollow" target="_blank"><span style="font-family: Calibri; font-size: 11.0pt;">http://www.attuneww.com/publications/apache-camel-startup-guide.html</span></a></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://kaviddiss.com/2015/09/06/learn-apache-camel/" rel="nofollow" target="_blank"><span style="font-family: Calibri; font-size: 11.0pt;">http://kaviddiss.com/2015/09/06/learn-apache-camel/</span></a></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="https://www.javacodegeeks.com/2012/05/apache-camel-tutorial-introduction-to.html" rel="nofollow" target="_blank"><span style="font-family: Calibri; font-size: 11.0pt;">https://www.javacodegeeks.com/2012/05/apache-camel-tutorial-introduction-to.html</span></a></li>
</ul>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-87318170397724529542016-06-19T16:21:00.000+05:302016-06-20T10:54:16.787+05:30Java power tools series - Performance Analysis<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="margin: 0in; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">I hope, you have
already read "<a href="http://tirthalpatel.blogspot.in/2013/12/java-power-tools-series-preface.html" target="_blank">Preface</a>"
of my java power tools series. Actually, I was intending to write detailed
separate posts on numerous performance diagnostic tools, like I wrote few posts
previously as part of this series. Anyway, let me start with quickly
recollecting my knowledge on this topic.</span></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div style="margin: 0in; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Well, performance
analysis and optimization is indeed not a child's play. At times, it may be a
hard nut to crack for developers, specifically when performance problem is
reported by a client in production environment and not replicated in testing or
development. In fact, scalability issue is reported as performance issue
sometimes, which can be solved by vertical or horizontal scalability instead of
unnecessarily spending time in code analysis and optimization activity.
Likewise, always performance issue could not be triggered by faulty code,
rather there could be inefficient application server or JVM tuning issue! You
never know. Therefore, there has to be a thoughtful architectural strategy to
accomplish application's <a href="http://www.opfro.org/index.html?Components/WorkProducts/RequirementsSet/Requirements/PerformanceRequirements.html~Contents" rel="nofollow" target="_blank">performance requirements</a> or for troubleshooting and fixing reported performance
problems. Well, <a href="https://en.wikipedia.org/wiki/Performance_engineering" rel="nofollow" target="_blank">Performance Engineering</a>, <a href="https://en.wikipedia.org/wiki/Benchmarking" rel="nofollow" target="_blank">Benchmarking</a>,
<a href="https://en.wikipedia.org/wiki/Software_performance_testing" rel="nofollow" target="_blank">Software Performance Testing</a>, <a href="https://en.wikipedia.org/wiki/Performance_tuning" rel="nofollow" target="_blank">Performance Tuning</a>
and <a href="https://en.wikipedia.org/wiki/Java_performance" rel="nofollow" target="_blank">Java Performance</a>
are vast topics by own. So, let me restrict this blog primarily for listing
java application performance monitoring, profiling and analysis tools.</span></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<h2 style="margin: 0in; text-align: left;">
<span style="font-weight: normal; text-decoration: underline;"><span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif;">Few remarkable tools for
performance analysis of Java applications</span></span></h2>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div style="text-align: left;">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border: 1pt solid rgb(163, 163, 163); margin-left: 0.3333in;" valign="top">
<tbody>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 5.402in;"><div style="margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Problem Statements</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.552in;"><div style="margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">My Preferred Tool / Product / Solution</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.1895in;"><div style="margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Pricing Remark</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.3263in;"><div style="margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Related References</span></span></div>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 5.402in;"><span style="font-family: "arial" , "helvetica" , sans-serif;">I am damn sure, there are
memory related issues. Just need to </span><span style="font-family: "arial" , "helvetica" , sans-serif; font-weight: bold;">find memory leaks and reduce
memory consumption</span><span style="font-family: "arial" , "helvetica" , sans-serif;"> via memory dump analysis.</span><br />
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.552in;"><ul>
<li><a href="http://www.eclipse.org/mat/" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Eclipse MAT</span></a></li>
<li><a href="http://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html" rel="nofollow" style="font-family: Arial, Helvetica, sans-serif;" target="_blank">jmap</a><span style="font-family: "arial" , "helvetica" , sans-serif;"> and </span><a href="http://docs.oracle.com/javase/7/docs/technotes/tools/share/jhat.html" rel="nofollow" style="font-family: Arial, Helvetica, sans-serif;" target="_blank">jhat</a></li>
</ul>
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.1895in;"><div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Free</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.3263in;"><ul>
<li><a href="https://plumbr.eu/blog/memory-leaks/solving-outofmemoryerror-story-of-a-developer" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Solving OutOfMemoryError</span></a></li>
<li><a href="http://kohlerm.blogspot.in/2009/07/eclipse-memory-analyzer-10-useful.html" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Eclipse Memory Analyzer, 10 useful tips/articles</span></a></li>
<li><a href="https://dzone.com/articles/how-fix-memory-leaks-java" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">How to Fix Memory Leaks in Java</span></a></li>
<li><a href="https://dzone.com/articles/busting-permgen-myths" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Busting PermGen Myths</span></a></li>
</ul>
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
<span style="font-family: "arial" , "helvetica" , sans-serif;"> </span>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 5.402in;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Just need to</span><span style="font-family: "arial" , "helvetica" , sans-serif; font-weight: bold;"> analyze
java thread dumps</span><span style="font-family: "arial" , "helvetica" , sans-serif;">.</span><br />
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.552in;"><ul>
<li><a href="http://lockness.plugin.free.fr/home.php" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Eclipse Lockness plugin</span></a></li>
<li><a href="https://java.net/projects/tda/" rel="nofollow" style="font-family: Arial, Helvetica, sans-serif;" target="_blank">TDA</a><span style="font-family: "arial" , "helvetica" , sans-serif;"> / </span><a href="https://java.net/projects/threadlogic" rel="nofollow" style="font-family: Arial, Helvetica, sans-serif;" target="_blank">ThreadLogic</a></li>
</ul>
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.1895in;"><div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Free</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.3263in;"><ul>
<li><a href="https://sites.google.com/site/threaddumps/java-thread-dumps" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Understanding Java Thread Dumps</span></a></li>
<li><a href="https://blogs.oracle.com/ATeamExalogic/entry/analyzing_thread_dumps_in_middleware" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Analyzing Thread Dumps In Middleware</span></a></li>
</ul>
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 5.402in;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-weight: bold;">For
non-production environment</span><span style="font-family: "arial" , "helvetica" , sans-serif;">, need visual interface for</span><span style="font-family: "arial" , "helvetica" , sans-serif; font-weight: bold;"> Java
monitoring and troubleshooting tool</span><span style="font-family: "arial" , "helvetica" , sans-serif;">, which should provide some basic profiling
capabilities too. (may use in production, if performance overhead is
not a critical concern!)</span><br />
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.552in;"><ul>
<li><a href="http://docs.oracle.com/javase/6/docs/technotes/tools/share/jvisualvm.html" rel="nofollow" style="font-family: Arial, Helvetica, sans-serif;" target="_blank">jVisualVM</a><span style="font-family: "arial" , "helvetica" , sans-serif;"> / </span><a href="https://visualvm.java.net/" rel="nofollow" style="font-family: Arial, Helvetica, sans-serif;" target="_blank">VisualVM</a></li>
</ul>
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.1895in;"><div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Free</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.3263in;"><ul>
<li><a href="http://www.herongyang.com/Java-Tools/jvisualvm-Java-VisualVM-Visual-Tool.html" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Java VisualVM Tutorial</span></a></li>
<li><a href="https://blogs.oracle.com/nbprofiler/entry/five_visualvm_myths_demystified" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Five VisualVM Myths Demystified</span></a></li>
</ul>
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 5.402in;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Looking for modular and
extensible </span><span style="font-family: "arial" , "helvetica" , sans-serif; font-weight: bold;">web console</span><span style="font-family: "arial" , "helvetica" , sans-serif;">, which can be used </span><span style="font-family: "arial" , "helvetica" , sans-serif; font-weight: bold;">to manage every kind of
container or even any JVM middleware</span><span style="font-family: "arial" , "helvetica" , sans-serif;">.</span><br />
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.552in;"><ul>
<li><a href="http://hawt.io/" rel="nofollow" style="font-family: Arial, Helvetica, sans-serif;" target="_blank">hawtio</a></li>
</ul>
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.1895in;"><div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Free</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.3263in;"><ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;">
<li><a href="http://www.mastertheboss.com/jboss-server/jboss-monitoring/hawtio-quickstart-tutorial" rel="nofollow" style="font-family: Arial, Helvetica, sans-serif;" target="_blank">Hawtio quickstart tutorial</a></li>
</ul>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 5.402in;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-weight: bold;">For
production environment</span><span style="font-family: "arial" , "helvetica" , sans-serif;"> or </span><span style="font-family: "arial" , "helvetica" , sans-serif; font-weight: bold;">complex performance troubleshooting needs in
non-production environments</span><span style="font-family: "arial" , "helvetica" , sans-serif;">, need </span><span style="font-family: "arial" , "helvetica" , sans-serif; font-weight: bold;">advance Java Profiling tool</span><span style="font-family: "arial" , "helvetica" , sans-serif;">. Needless to mention,
such tool's performance overhead should be minimal or even
controllable.</span><br />
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.552in;"><ul>
<li><a href="http://www.oracle.com/technetwork/java/javaseproducts/mission-control/index.html" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Oracle Java Mission Control and Java Flight Recorder</span></a></li>
<li><a href="https://www.yourkit.com/java/profiler/" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Yourkit</span></a></li>
<li><a href="https://www.ej-technologies.com/products/jprofiler/overview.html" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">jProfiler</span></a></li>
</ul>
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.1895in;"><div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Commercial</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-style: italic;"><span style="font-family: "arial" , "helvetica" , sans-serif;">(Oracle JMC and JFR requires to purchase license
for production use, otherwise it's Free.)</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.3263in;"><ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;">
<li><a href="https://www.prosysopc.com/blog/using-java-mission-control-for-performance-monitoring/" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Using Java Mission Control for performance monitoring</span></a></li>
<li><a href="http://blog.takipi.com/oracle-java-mission-control-the-ultimate-guide/" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Oracle Java Mission Control: The Ultimate Guide</span></a></li>
<li><a href="http://zeroturnaround.com/rebellabs/top-5-java-profilers-revealed-real-world-data-with-visualvm-jprofiler-java-mission-control-yourkit-and-custom-tooling/" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Top 5 Java Profilers Revealed: Real world data with VisualVM, JProfiler, Java Mission Control, YourKit and Custom tooling</span></a></li>
<ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 5.402in;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Need of APM solution for
Business transactions profiling, root cause detection and performance
diagnosis</span><span style="font-family: "arial" , "helvetica" , sans-serif; font-weight: bold;"> in Development or Test Environment for single JVM or
an application</span><span style="font-family: "arial" , "helvetica" , sans-serif;">.
Just limited freely offered "</span><span style="font-family: "arial" , "helvetica" , sans-serif; font-weight: bold;">Java performance monitoring with
automatic root cause detection</span><span style="font-family: "arial" , "helvetica" , sans-serif;">" features may be sufficient to find a
performance bottleneck. (may use in production for simplistic
requirement)</span><br />
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.552in;"><ul>
<li><a href="https://www.appdynamics.com/upgrade-lite-to-pro/" rel="nofollow" style="font-family: Arial, Helvetica, sans-serif;" target="_blank">AppDynamics Lite</a></li>
<li><a href="https://www.takipi.com/pricing" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Takipi Lite</span></a></li>
</ul>
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.1895in;"><div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Free</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-style: italic;"><span style="font-family: "arial" , "helvetica" , sans-serif;">(limited features available compare to commercial
offerings)</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.3263in;"><ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;">
<li><a href="http://omgimlovinit.blogspot.in/2011/07/finding-root-cause-fast.html" rel="nofollow" style="font-family: Arial, Helvetica, sans-serif;" target="_blank">Finding the root cause! Fast! With AppDynamics!</a></li>
</ul>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 5.402in;"><span style="font-family: "arial" , "helvetica" , sans-serif;">* All in All, looking for adopting full-fledge </span><span style="font-family: "arial" , "helvetica" , sans-serif; font-weight: bold;">Application Performance Management (APM) solution for production</span><span style="font-family: "arial" , "helvetica" , sans-serif;">, and apparently <b>should work for distributed systems by providing a visual dashboard to manage multiple JVMs across different machines</b>.</span><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />* The performance issue is
reported in production, but not able to replicate in Development and QA
environments, so all are at their wit's end to find the bottleneck in
the system! Need to troubleshoot problem directly in production with
negligible overhead!</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">* Java profiling tool is not
sufficient for performance analysis. Because performance issues are
occurring unexpectedly in production systems and exact business
transaction or bottleneck is unknown, which is causing the issues! It
could be even Database or external Web Service or Scala component!</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Pressing business
requirement to discover, diagnostic and resolve application issues
before they impact end users, violate SLA or negatively impact the
business.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">* Need a complete solution
to monitor various components of the application and technology stack,
such as server, database, hardware, network. In fact, looking for an
automated capability in production to identify problematic transactions
based on performance thresholds and offer centralized business
intelligence like dashboard.</span><br />
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.552in;"><ul>
<li><a href="https://www.appdynamics.com/" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">AppDynamics</span></a></li>
<li><a href="https://newrelic.com/" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">New Relic</span></a></li>
<li><a href="https://www.takipi.com/" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Takipi</span></a></li>
<li><a href="https://plumbr.eu/" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Plumbr</span></a></li>
<li><span style="font-family: "arial" , "helvetica" , sans-serif;">…</span></li>
</ul>
<ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;"><ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</ul>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.1895in;"><div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Commercial</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-style: italic;"><span style="font-family: "arial" , "helvetica" , sans-serif;">(for real production purpose, all are commercial.
Most offers SaaS pricing model. Although, some offers On-Premise and Hybrid
deployment options too)</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.3263in;"><ul style="margin-bottom: 0in; margin-left: 0.2055in; margin-top: 0in; unicode-bidi: embed;">
<li><a href="https://en.wikipedia.org/wiki/Application_performance_management" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">APM wiki</span></a></li>
<li><a href="https://www.gartner.com/doc/reprints?id=1-2UD2R8Y&ct=151217&st=sb" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Magic Quadrant for Application Performance Monitoring Suites</span></a></li>
<li><a href="https://blog.profitbricks.com/application-performance-management-tools/" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">40 Application Performance Management Tools</span></a></li>
<ul style="margin-bottom: 0in; margin-left: 0in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
<div style="margin: 0in;">
<br /></div>
</ul>
</td></tr>
</tbody></table>
</div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<h2 style="margin: 0in; text-align: left;">
<span style="font-weight: normal; text-decoration: underline;"><span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif;">The Performance Tuning
Lifecycle</span></span></h2>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div style="margin: 0in; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you
are newbie to Java performance tuning area, then I strongly suggest to attend
less than 2 hours <a href="https://www.youtube.com/playlist?list=PL5BFBFE156D50B07E" rel="nofollow" target="_blank">Complete Java Performance Tuning Training</a> course on youtube for fundamental understanding on
the following performance tuning lifecycle. Then,
you can proceed to choose suitable tools to identify performance bottleneck.</span></div>
<ol style="font-family: Arial, Helvetica, sans-serif; text-align: left;">
<li>Define Requirements</li>
<li>Measure / Test (Create Baseline)</li>
<li>Identify Bottleneck</li>
<li>Implement Fixes</li>
<li>Measure / Test (New Baseline)</li>
<li>Compare to Old Baseline & Requirements</li>
<li>If necessary repeat steps 3 – 6</li>
</ol>
<h2 style="margin: 0in; text-align: left;">
<span style="font-weight: normal; text-decoration: underline;"><span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif;">Performance Troubleshooting
Tools Highlights</span></span></h2>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div style="margin: 0in; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">You may attend an
hour presentation on "<a href="http://www.infoq.com/presentations/troubleshooting-java-web-apps" rel="nofollow" target="_blank">Troubleshooting Live Java Web Applications</a>", which I found very informative for the
performance troubleshooting tools scoping in production vs. development
environment. Specifically at the end of the presentation below final tools
comparison chart provides outstanding information.</span></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn47HiMBaBO6QReCF4J6yImlc5Z3QrMFxnysvd_9NtvhenBUwMFkLRHxw1RjHkttKWwTnSoGFIh8JjEDkP-0TCNHgqaWATSI1NJD2XV-OcWdIM2iBpqiPGNHtgAvR-FsBjSFBm0zQ3JTvW/s1600/Performance-Troubleshooting-Tools.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="346" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn47HiMBaBO6QReCF4J6yImlc5Z3QrMFxnysvd_9NtvhenBUwMFkLRHxw1RjHkttKWwTnSoGFIh8JjEDkP-0TCNHgqaWATSI1NJD2XV-OcWdIM2iBpqiPGNHtgAvR-FsBjSFBm0zQ3JTvW/s640/Performance-Troubleshooting-Tools.png" width="640" /></a></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<h2 style="margin: 0in; text-align: left;">
<span style="font-weight: normal; text-decoration: underline;"><span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif;">Also Refer</span></span></h2>
<ul style="margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; text-align: left; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="https://dzone.com/refcardz/java-performance-optimization"><span style="font-family: "calibri"; font-size: 11.0pt;">Dzone Refcard - Java
Performance Optimization</span></a></li>
<ul style="margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "calibri"; font-size: 11.0pt;"><a href="http://www.dynatrace.com/en/javabook.html" rel="nofollow" target="_blank">Java Enterprise Performance - Untimate Guide</a></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://www.javaperformancetuning.com/tips/index.shtml" rel="nofollow" target="_blank"><span style="font-family: "calibri"; font-size: 11.0pt;">http://www.javaperformancetuning.com/tips/index.shtml</span></a></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://blog.ippon.fr/2013/03/11/improving-the-performance-of-the-spring-petclinic-sample-application-part-1-of-5/" rel="nofollow" target="_blank"><span style="font-family: "calibri"; font-size: 11.0pt;">Improving the performance of the Spring-Petclinic sample application</span></a></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://blog.takipi.com/15-tools-to-use-when-deploying-code-to-production" rel="nofollow" target="_blank"><span style="font-family: "calibri"; font-size: 11.0pt;">15 Tools Java Developers Should Use After a Major Release</span></a></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://www.herongyang.com/Java-Tools/index.html" rel="nofollow" target="_blank"><span style="font-family: "calibri"; font-size: 11.0pt;">Java Tools Tutorials</span></a></li>
</ul>
<div style="margin: 0in 0in 0in 0.375in; text-align: left;">
<br /></div>
<h2 style="margin: 0in; text-align: left;">
<span style="font-weight: normal; text-decoration: underline;"><span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif;">Disclaimer</span></span></h2>
<div style="margin: 0in; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">I am not biased to
particular free or commercial tools, rather my objective is about sharing my
own candid experience on set of tools. </span></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div style="margin: 0in; text-align: left;">
<br /></div>
<div style="text-align: left;">
</div>
<div style="color: blue; margin: 0in; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you
know or have experienced any other tools suitable for Java applications
performance analysis, please share the name of such tool along with your
personal feedback in the comment.</span></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com1tag:blogger.com,1999:blog-5763268233914970621.post-61258151150205450342016-05-28T15:08:00.001+05:302016-05-28T15:11:39.891+05:30Learning Scala made easy for Java programmers<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you are Java
developer and accustomed to use Eclipse IDE, you can <a href="http://tirthalpatel.blogspot.com/2015/06/steps-to-create-scala-eclipse-project.html" target="_blank">refer my another post for steps of creating Scala project skeleton</a>.</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Next, <b>Get started
with "ScalaQuickStart" project</b> @ <a href="https://github.com/tirthalpatel/Learning-Scala/tree/master/ScalaQuickStart" rel="nofollow" target="_blank">https://github.com/tirthalpatel/Learning-Scala/tree/master/ScalaQuickStart</a>
</span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Syntax comparison between
Java and Scala + Sample code snippet for getting started with Scala
features.</span></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;"><span style="font-family: "arial" , "helvetica" , sans-serif;">This project contains my
notes and code snippet when I was learning Scala from various resources
(mentioned in "See Also" section of README file).</span></span><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: 11pt;"> </span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmO0sXcz8LSPe4VL6EBu6ckmxXrBFzJLxigLopQ2jE0CLEz8FTna-5ZmMAnWfpmDKcCKPzqN3vgJdyYSm7XoX86eVMfOY2IAOYzkNhUjtwgF7xgAwzZcCiDrDVd3jKoORQpSrxcO0tt1zM/s1600/Scala-GettingStartedCode.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmO0sXcz8LSPe4VL6EBu6ckmxXrBFzJLxigLopQ2jE0CLEz8FTna-5ZmMAnWfpmDKcCKPzqN3vgJdyYSm7XoX86eVMfOY2IAOYzkNhUjtwgF7xgAwzZcCiDrDVd3jKoORQpSrxcO0tt1zM/s640/Scala-GettingStartedCode.png" width="640" /></a></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Don't miss to read <a href="https://dzone.com/refcardz/scala" rel="nofollow" target="_blank">Getting Started with Scala Refcard onDZone</a>.</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 14pt; margin: 0in;">
<span style="font-weight: bold; text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Disclaimer</span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">The code snippet are
mainly targeted for learning purpose, and not focused for producing production
code quality.</span></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-41403265789857005612016-03-06T12:35:00.000+05:302016-03-06T12:56:29.604+05:30Book Review: The Well-Grounded Java Developer - Vital techniques of Java 7 and polyglot programming<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="direction: ltr;">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-color: #A3A3A3; border-style: solid; border-width: 1pt; direction: ltr;" valign="top">
<tbody>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 40%;" width="40%"><div style="margin: 0in;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><span style="text-decoration: underline;">Book Name</span>: The Well-Grounded Java
Developer - vital techniques of Java 7 and polyglot programming</span></div>
<div style="margin: 0in;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><br /></span></div>
<div style="margin: 0in;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><span style="text-decoration: underline;">URL</span>: <a href="https://www.manning.com/books/the-well-grounded-java-developer" rel="nofollow" target="_blank">https://www.manning.com/books/the-well-grounded-java-developer</a></span></div>
<div style="margin: 0in;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><br /></span></div>
<div style="margin: 0in;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><span style="text-decoration: underline;">Source Code</span>: <a href="https://manning-content.s3.amazonaws.com/download/e/b06312f-cb9b-462d-bd52-83b3986f64d4/TWGJD_SourceCode.zip" rel="nofollow" target="_blank">https://manning-content.s3.amazonaws.com/download/e/b06312f-cb9b-462d-bd52-83b3986f64d4/TWGJD_SourceCode.zip</a></span></div>
<div style="margin: 0in;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioeEaR-_LkF2bjP__vNJgzthxaWEVEdUlU5m8AKC8CPTE3dGfmZh3rDyyoPV9nYR7_P0t1Uu_tbdOs4pi9147D_uQGpM_RKqXg70pMf2SPShWhigywWrx-5fusfQsOQwJkGOH2Tayykqwi/s1600/BookReview-TheWellGroundedJavaDeveloper.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioeEaR-_LkF2bjP__vNJgzthxaWEVEdUlU5m8AKC8CPTE3dGfmZh3rDyyoPV9nYR7_P0t1Uu_tbdOs4pi9147D_uQGpM_RKqXg70pMf2SPShWhigywWrx-5fusfQsOQwJkGOH2Tayykqwi/s200/BookReview-TheWellGroundedJavaDeveloper.png" width="158" /></span></a></div>
<div style="margin: 0in;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><br /></span></div>
<div style="margin: 0in;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><span style="text-decoration: underline;">Straight from the horse's mouth:</span> </span></div>
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">The Well-Grounded Java Developer offers a fresh and practical look at new Java 7 features, new JVM languages, and the array of supporting technologies you need for the next generation of Java-based software.</span><br />
<div style="margin: 0in;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><br /></span></div>
<div style="margin: 0in;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small; font-weight: bold;">About the book</span></div>
<div style="margin-bottom: 7pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">The Well-Grounded Java Developer starts with
thorough coverage of Java 7 features like try-with-resources and NIO.2.
You'll then explore a cross-section of emerging JVM-based languages,
including Groovy, Scala, and Clojure. You will find clear examples that are
practical and that help you dig into dozens of valuable development
techniques showcasing modern approaches to the dev process, concurrency,
performance, and much more.</span></div>
<div style="margin-bottom: 7pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">Written for readers familiar with Java. No experience
with Java 7 or new JVM languages required.</span></div>
<div style="margin-bottom: 7pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small; font-weight: bold;">What's inside</span></div>
<ul><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">
<li><span style="color: #444444;">New Java 7 features</span></li>
<li><span style="color: #444444;">Tutorials on Groovy, Scala, and Clojure</span></li>
<li><span style="color: #444444;">Discovering multicore processing and concurrency</span></li>
<li><span style="color: #444444;">Functional programming with new JVM languages</span></li>
<li><span style="color: #444444;">Modern approaches to testing, build, and CI</span></li>
</span></ul>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">
</span>
<div style="margin: 0in;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small; font-weight: bold;">About the reader</span></div>
<div style="margin-bottom: 7pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">Written for readers familiar with Java. No experience
with Java 7 or new JVM languages required.</span></div>
<div style="margin-bottom: 7pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small; font-weight: bold;">About the authors</span></div>
<div style="margin-bottom: 7pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;">Ben Evans is a Tech Fellow of jClarity, a Java
performance firm and a member of the Java Community Process Executive
Committee. Martijn Verburg is the CEO of jClarity, a Java
performance firm, co-leader of the London JUG, and a popular conference
speaker</span><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;">.</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 60%;" width="60%"><div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">First of all, let
me thank to the authors of this book for their thorough research on the mentioned topics (java 7 features,
polyglot programming on JVM and related vital development techniques) and
clear writing with a well-balanced theoretical and practical coverage.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="font-weight: bold; text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif;">My Personal Feedback</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you are newbie
to java programming, I don't suggest you reading this book. Once you gain
some relevant experience in the industry, reading this book will produce
completely different outlook and shape your overall programming talent.<span style="font-style: italic;"> (By the way, you may read my "</span><a href="http://tirthalpatel.blogspot.com/2014/05/new-to-java-getting-started-guide.html" target="_blank"><span style="font-style: italic;">New to Java - Getting Started Guide</span></a><span style="font-style: italic;">" and "</span><a href="http://tirthalpatel.blogspot.com/2014/07/java5-new-features-sample-code-snippet.html" target="_blank"><span style="font-style: italic;">Be familiar with Java 5 features</span></a><span style="font-style: italic;">" blogs.)</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">According to me, this book has definite potential to
transform you a well-grounded java developer, if you have some development
experience (may be at least 2-3 years) in building java based web or
enterprise applications.</span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Part 1 of the book
very nicely covers Java 7 features, specifically Project Coin and NIO.2.
Apart from the Java 7 language specific learnings, there are many other
interesting topics to understand in next chapters of this book.</span></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-style: italic;">(On a separate note, Java 8 had released many new
features in Mar 2014. If you didn't get chance to see those yet, you may
refer my "</span><a href="http://tirthalpatel.blogspot.com/2015/08/java8-highlights-of-new-features-and-enhancements.html" target="_blank"><span style="font-style: italic;">Java 8 - Highlights of new features and enhancements</span></a><span style="font-style: italic;">" blog.) </span></span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Part 2 covers few
vital programming techniques. Starting with Dependency Injection (DI),
fundamentally it could be known to most java developers nowadays, as Spring
DI is widely adopted framework in myriads of java projects. However, it is
highly likely that Java Concurrency, Classloading, Nature of JVM bytecode and
Performance Tuning fundamentals would be new to know for many developers.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Part 3 is the
heart of the book, as I found this book as one of the best source to
establish understanding on "Polyglot Programming on the JVM". It
appreciably explains classification of various programming languages, how <a href="https://en.wikipedia.org/wiki/List_of_JVM_languages" rel="nofollow" target="_blank">JVM supports 100+ alternative programming languages</a>
and when to use Java vs. alternative languages. Moreover, you can get
features and syntax highlights of Groovy, Scala and Clojure. After reading
this, you will start evaluating ability of different programming languages
and may take acceptable risk to try power of new programming languages to
deliver better solutions, as and when applicable. In short, reading this
chapter will surely make you versatile programmer. </span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Part 4 includes
essentials topics, which all java developers should be aware and attempt, if
not yet! Here, you will practically understand power of unit testing using
Test Driven Development, Build using Maven and Continuous Integration using
Jenkins. Optionally, you may experiment rapid web development approaches over
building traditional JSP/JSF based web application. Finally, it closes with
few topics which Java developers should always be aware of what’s coming
around the corner, however, some of those are already available now like Java
8 Lambdas.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Happy reading the
Well-Grounded Java Developer book… :-)</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="color: #c00000; margin: 0in;">
<span style="font-weight: bold; text-decoration: underline;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Disclaimer</span></span></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Views expressed
here are solely my own and are not supported by the author or the publication
or any associated entity of this book.</span></div>
</td>
</tr>
</tbody></table>
</div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-24390214497554936142016-02-21T13:56:00.002+05:302016-02-21T13:58:06.439+05:30Liferay Portal - A solution for weird BeanCreationException error in Build Service with Maven<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Recently I worked on
switching from Liferay Ant based SDK to Maven based development environment
project structure. Well, everything was working. However, while building
services using Liferay IDE or Maven command (liferay: build-service), it was
failing with a weird error!</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">After exploring a
lot, finally, I got some hints from <a href="http://stackoverflow.com/questions/28311037/liferay-build-service-exception" rel="nofollow" target="_blank">stackoverflow</a>
which states that someone faced similar issue with Ant SDK based Liferay and
fix it by replacing corrupted SDK. Well, I had Maven environment. So I spent my
few hours to do complete setup again by doing fresh download of Liferay IDE,
Liferay Portal and Liferay Maven Plugins. After putting all efforts, I got the
same error at the end. Ahhh, spending time on environment issues is really
frustrating. With few trials, finally I could fix it just by deleting maven
local repository on my machine.</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><span style="text-decoration: underline;">Problem Statement</span>: </span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">The
liferay:build-service with maven fails due to BeanCreationException</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in 0in 0in 0.375in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[ERROR] Failed to execute goal
com.liferay.maven.plugins:liferay-maven-plugin:6.2.10.13:build-service
(default-cli) on project xyz-portlet: null: MojoExecutionException:
InvocationTargetException: Error creating bean with name
'com.liferay.portal.kernel.language.LanguageUtil' defined in class path
resource [META-INF/util-spring.xml]: Cannot create inner bean
'com.liferay.portal.language.LanguageImpl#7bbd7f69' of type
[com.liferay.portal.language.LanguageImpl] while setting bean property
'language'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'com.liferay.portal.language.LanguageImpl#7bbd7f69' defined in class
path resource [META-INF/util-spring.xml]: Invocation of init method failed;
nested exception is java.lang.NoClassDefFoundError:
javax/servlet/jsp/PageContext: javax.servlet.jsp.PageContext -> [Help 1]</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><span style="text-decoration: underline;">Solution</span>: </span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">I just deleted maven
local repository on my machine (in case of windows, by default, it is this
folder - C:\Users\<username>\.m2\repository). Then, I executed "mvn
clean install" command on a parent module of project, which downloaded all
required dependencies again. Finally, I could run
"liferay:build-service".</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Wow, this fixed the
issue. Still I am not sure, which particular dependency in my local maven
repository was corrupted and causing the mentioned problem while using liferay
service builder!!!</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><span style="text-decoration: underline;">Full Error Stack Detail</span>:</span></div>
<div style="margin: 0in;">
<br /></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">>mvn liferay:build-service</span></span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[INFO]
Scanning for projects...</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[INFO]</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[INFO]
------------------------------------------------------------------------</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[INFO]
Building XYZ Portlets 1.0-SNAPSHOT</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[INFO]
------------------------------------------------------------------------</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[INFO]</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[INFO]
--- liferay-maven-plugin:6.2.10.13:build-service (default-cli) @ xyz-portlet
---</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[INFO]
Building from E:\Projects\xyz-portlet/src/main/webapp/WEB-INF/service.xml</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Loading
jar:file:/C:/Users/tirthalp/Downloads/liferay-portal-6.2-ee-sp13/tomcat-7.0.62/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/system.properties</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Jan
05, 2016 11:49:42 AM com.liferay.portal.kernel.log.Jdk14LogImpl info</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">INFO:
Global shared lib directory
/C:/Users/tirthalp/.m2/repository/javax/servlet/servlet-api/2.5/</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Jan
05, 2016 11:49:42 AM com.liferay.portal.kernel.log.Jdk14LogImpl info</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">INFO:
Global lib directory
/C:/Users/tirthalp/Downloads/liferay-portal-6.2-ee-sp13/tomcat-7.0.62/lib/ext/</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Jan
05, 2016 11:49:42 AM com.liferay.portal.kernel.log.Jdk14LogImpl info</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">INFO:
Portal lib directory
/C:/Users/tirthalp/Downloads/liferay-portal-6.2-ee-sp13/tomcat-7.0.62/webapps/ROOT/WEB-INF/lib/</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Jan
05, 2016 11:49:43 AM com.liferay.portal.kernel.log.Jdk14LogImpl info</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">INFO:
Properties for portal loaded from
[jar:file:/C:/Users/tirthalp/Downloads/liferay-portal-6.2-ee-sp13/tomcat-7.0.62/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/com/liferay/portal/tools/dependencies/portal-tools.properties,
jar:file:/C:/Users/tirthalp/Downloads/liferay-portal-6.2-ee-sp13/tomcat-7.0.62/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/portal-patched.properties,
jar:file:/C:/Users/tirthalp/Downloads/liferay-portal-6.2-ee-sp13/tomcat-7.0.62/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/portal.properties]</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Loading
jar:file:/C:/Users/tirthalp/Downloads/liferay-portal-6.2-ee-sp13/tomcat-7.0.62/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/portal.properties</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Loading
jar:file:/C:/Users/tirthalp/Downloads/liferay-portal-6.2-ee-sp13/tomcat-7.0.62/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/portal-patched.properties</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Loading
jar:file:/C:/Users/tirthalp/Downloads/liferay-portal-6.2-ee-sp13/tomcat-7.0.62/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/com/liferay/portal/tools/dependencies/portal-tools.properties</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[INFO]
------------------------------------------------------------------------</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[INFO]
BUILD FAILURE</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[INFO]
------------------------------------------------------------------------</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[INFO]
Total time: 10.798 s</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[INFO]
Finished at: 2016-01-05T11:49:51+05:30</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[INFO]
Final Memory: 24M/241M</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">[INFO]
------------------------------------------------------------------------</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">[ERROR] Failed to execute goal
com.liferay.maven.plugins:liferay-maven-plugin:6.2.10.13:build-service
(default-cli) on project xyz-portlet: null: MojoExecutionException:
InvocationTargetException: Error creating bean with name
'com.liferay.portal.kernel.language.LanguageUtil' defined in class path
resource [META-INF/util-spring.xml]: Cannot create inner bean
'com.liferay.portal.language.LanguageImpl#7bbd7f69' of type
[com.liferay.portal.language.LanguageImpl] while setting bean property
'language'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'com.liferay.portal.language.LanguageImpl#7bbd7f69' defined in class
path resource [META-INF/util-spring.xml]: Invocation of init method failed;
nested exception is java.lang.NoClassDefFoundError:
javax/servlet/jsp/PageContext: javax.servlet.jsp.PageContext -> [Help 1]</span></span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<br /></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">------------------------</span></span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Detailed Stack Trace:</span></span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">------------------------</span></span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">org.apache.maven.lifecycle.LifecycleExecutionException:
Failed to execute goal
com.liferay.maven.plugins:liferay-maven-plugin:6.2.10.13:build-service
(default-cli) on project xyz-portlet: null</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.apache.maven.cli.MavenCli.main(MavenCli.java:197)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
java.lang.reflect.Method.invoke(Method.java:601)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Caused
by: org.apache.maven.plugin.MojoExecutionException</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
com.liferay.maven.plugins.AbstractLiferayMojo.execute(AbstractLiferayMojo.java:88)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> ... 20 more</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Caused
by: java.lang.reflect.InvocationTargetException</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
java.lang.reflect.Method.invoke(Method.java:601)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
com.liferay.maven.plugins.AbstractLiferayMojo.executeTool(AbstractLiferayMojo.java:224)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
com.liferay.maven.plugins.ServiceBuilderMojo.doExecute(ServiceBuilderMojo.java:167)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
com.liferay.maven.plugins.AbstractLiferayMojo.execute(AbstractLiferayMojo.java:81)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> ... 22 more</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Caused
by: org.springframework.beans.factory.BeanCreationException: Error creating
bean with name 'com.liferay.portal.kernel.language.LanguageUtil' defined in
class path resource [META-INF/util-spring.xml]: Cannot create inner bean
'com.liferay.portal.language.LanguageImpl#53d6cbe8' of type
[com.liferay.portal.language.LanguageImpl] while setting bean property
'language'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'com.liferay.portal.language.LanguageImpl#53d6cbe8' defined in class
path resource [META-INF/util-spring.xml]: Invocation of init method failed;
nested exception is java.lang.NoClassDefFoundError:
javax/servlet/jsp/PageContext</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:281)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:120)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1327)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1085)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:516)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
com.liferay.portal.spring.context.ArrayApplicationContext.<init>(ArrayApplicationContext.java:31)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
com.liferay.portal.spring.util.SpringUtil._loadContext(SpringUtil.java:74)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
com.liferay.portal.spring.util.SpringUtil.loadContext(SpringUtil.java:60)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
com.liferay.portal.util.InitUtil.initWithSpring(InitUtil.java:189)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
com.liferay.portal.util.InitUtil.initWithSpring(InitUtil.java:166)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
com.liferay.portal.tools.servicebuilder.ServiceBuilder.main(ServiceBuilder.java:199)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> ... 29 more</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Caused
by: org.springframework.beans.factory.BeanCreationException: Error creating
bean with name 'com.liferay.portal.language.LanguageImpl#53d6cbe8' defined in
class path resource [META-INF/util-spring.xml]: Invocation of init method
failed; nested exception is java.lang.NoClassDefFoundError:
javax/servlet/jsp/PageContext</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1422)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:518)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:270)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> ... 49 more</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Caused
by: java.lang.NoClassDefFoundError: javax/servlet/jsp/PageContext</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
java.lang.Class.getDeclaredMethods0(Native Method)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
java.lang.Class.privateGetDeclaredMethods(Class.java:2442)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
java.lang.Class.getMethod0(Class.java:2685)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
java.lang.Class.getMethod(Class.java:1620)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.BeanUtils.findMethod(BeanUtils.java:162)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1502)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1487)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1419)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> ... 52 more</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Caused
by: java.lang.ClassNotFoundException: javax.servlet.jsp.PageContext</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
java.net.URLClassLoader$1.run(URLClassLoader.java:366)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
java.net.URLClassLoader$1.run(URLClassLoader.java:355)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
java.security.AccessController.doPrivileged(Native Method)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
java.net.URLClassLoader.findClass(URLClassLoader.java:354)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
java.lang.ClassLoader.loadClass(ClassLoader.java:423)</span></div>
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> at
java.lang.ClassLoader.loadClass(ClassLoader.java:356)</span></div>
<br />
<div style="margin: 0in 0in 0in 1.125in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> ... 60 more</span></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-27208916429131413562015-08-30T12:30:00.003+05:302015-08-30T12:56:30.183+05:30Java 8 - Highlights of new features and enhancements<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
If you are new to
Java, please refer my <a href="http://tirthalpatel.blogspot.in/2014/05/new-to-java-getting-started-guide.html" rel="" target="_blank">New to Java - Getting Started Guide</a> post.</div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
Being a java
developer, one should start learning new language features and enhancements of
Java 8 if not yet! </div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div style="font-family: Calibri; margin: 0in;">
<span style="font-size: 12.0pt; font-weight: bold;">You can get sample code snippet of Java 8 features from my
Learning-Java Repository on Github @</span><span style="font-size: 11.0pt;"> </span><a href="https://github.com/tirthalpatel/Learning-Java/tree/master/Java8" rel="nofollow" target="_blank"><span style="font-size: 11.0pt;">https://github.com/tirthalpatel/Learning-Java/tree/master/Java8</span></a><span style="font-size: 11.0pt;"> --- Here you would find sample code along with easy
to understand comments to learn new language features released in Java 8, and I
will be adding more learning code of library enhancements in future.</span></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div style="font-family: Calibri; margin: 0in;">
<span style="font-size: 12.0pt; font-weight: bold;">Executive view of key features introduced in Java 8 </span><span style="font-size: 11.0pt;">--- For more detail, please refer </span><a href="http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html" rel="nofollow" target="_blank"><span style="font-size: 11.0pt;">Oracle documentation of New Features and Enhancements in Java 8</span></a><span style="font-size: 11.0pt;">.</span></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in; text-align: center;">
(<span style="font-weight: bold;">Right click the image - Open in New Window - Zoom it)</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy6dUUwy0zZBXh3TIpvFbKZBqgUsaoHGiroqXtpWR8uUvXwbKqaNzJuviXnxuWep8Fs0DrXc07QjeJqXTIPQ3AOC7gEbKkNCrgWqi1cYZNaSZaCg_r48rg3snEKLhynJhkoY2Sw34kpnFZ/s1600/Java8-NewFeaturesMindMapping.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy6dUUwy0zZBXh3TIpvFbKZBqgUsaoHGiroqXtpWR8uUvXwbKqaNzJuviXnxuWep8Fs0DrXc07QjeJqXTIPQ3AOC7gEbKkNCrgWqi1cYZNaSZaCg_r48rg3snEKLhynJhkoY2Sw34kpnFZ/s640/Java8-NewFeaturesMindMapping.png" width="563" /></a></div>
<div style="margin-left: .375in; margin: 0in;">
<br /></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-83450916032489499122015-08-30T12:26:00.006+05:302015-08-30T12:30:41.061+05:30Java 7 - Highlights of new features and enhancements<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">If you are new to
Java, please refer my <a href="http://tirthalpatel.blogspot.in/2014/05/new-to-java-getting-started-guide.html" target="_blank">New to Java - Getting Started Guide</a> post.</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Being a java
developer, one should be aware of at least new language features (referred as
project coin features) of Java 7. </span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 12.0pt; font-weight: bold;">You can get sample code snippet of Java 7 features from my
Learning-Java Repository on Github @</span><span style="font-size: 11.0pt;"> </span><a href="https://github.com/tirthalpatel/Learning-Java/tree/master/Java7" rel="nofollow" target="_blank"><span style="font-size: 11.0pt;">https://github.com/tirthalpatel/Learning-Java/tree/master/Java7</span></a><span style="font-size: 11.0pt;"> --- Here you would find sample code along with easy
to understand comments to learn new language features released in Java 7, and I
may add more code of library enhancements in future.</span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 12.0pt; font-weight: bold;">Executive view of key features introduced in Java 7 </span><span style="font-size: 11.0pt;">--- For more detail, please refer </span><a href="http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html" rel="nofollow" target="_blank"><span style="font-size: 11.0pt;">Oracle documentation of New Features and Enhancements in Java 7</span></a><span style="font-size: 11.0pt;">.</span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in; text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;">(<span style="font-weight: bold;">Right click the image - Open in New Window - Zoom it)</span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhInNW9dwTJaLVoPfs7lzjnNpxjJtqRB1lF9xEmvOqICF0uzxH_2Iz58DqTTw_M9p8-4XpOHZPEpSXhEAErJmy9l7yN_-gnqB4zCWGAFuxsBXQVaJFzb_sF9GmwznOQ0lJQyqwPzdc2dgWE/s1600/Java7-NewFeaturesMindMapping.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="336" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhInNW9dwTJaLVoPfs7lzjnNpxjJtqRB1lF9xEmvOqICF0uzxH_2Iz58DqTTw_M9p8-4XpOHZPEpSXhEAErJmy9l7yN_-gnqB4zCWGAFuxsBXQVaJFzb_sF9GmwznOQ0lJQyqwPzdc2dgWE/s640/Java7-NewFeaturesMindMapping.png" width="640" /></a></div>
<div style="margin-left: .375in; margin: 0in;">
<br /></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-772008716430689382015-08-30T12:20:00.002+05:302015-08-30T12:24:28.247+05:30Java SE 6 - Highlights of new features and enhancements<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">If you are new to
Java, please refer my <a href="http://tirthalpatel.blogspot.in/2014/05/new-to-java-getting-started-guide.html" target="_blank">New to Java - Getting Started Guide</a> post.</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Being a java
developer, one should know that <span style="font-weight: bold;">no new language
changes were introduced in Java SE 6</span>. Most importantly, introduction of
Scripting in Java Platform (JSR-223) had encouraged acceptance of other popular
open-source languages on JVM runtime via scripting engine implementation of a
given programming language. This specification also offers interoperability
between Java and non-Java JVM languages (i.e. JavaScript, Groovy…). </span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 12.0pt; font-weight: bold;">Executive view of key changes introduced in Java SE 6 </span><span style="font-size: 11.0pt;">--- For more detail, please refer </span><a href="http://www.oracle.com/technetwork/java/javase/features-141434.html" rel="nofollow" target="_blank"><span style="font-size: 11.0pt;">Oracle documentation of New Features and Enhancements in Java SE 6</span></a><span style="font-size: 11.0pt;">.</span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in; text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>(Right
click the image - Open in New Window - Zoom it)</b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv-2z1a51TID0hCvF4vmdbPXkVlZq6xiLEa5jntPVdsfpN1tnQGwWw80cPlYR7_0rJkX-Uhz_y51MQrACUgmcQrtDNvkMhK0H-0Z82LWtez2Ffg2v94YSD7jWRTkrcTTz6mr4adssCb_HR/s1600/Java6-NewFeaturesMindMapping.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="276" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv-2z1a51TID0hCvF4vmdbPXkVlZq6xiLEa5jntPVdsfpN1tnQGwWw80cPlYR7_0rJkX-Uhz_y51MQrACUgmcQrtDNvkMhK0H-0Z82LWtez2Ffg2v94YSD7jWRTkrcTTz6mr4adssCb_HR/s640/Java6-NewFeaturesMindMapping.png" width="640" /></a></div>
<div style="margin-left: .375in; margin: 0in;">
<br /></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com1tag:blogger.com,1999:blog-5763268233914970621.post-76472944720853058902015-08-29T16:27:00.001+05:302015-08-29T16:32:47.335+05:30Importance of Software Products Interoperability or Compatibility Matrix<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Recently I migrated
from old to new laptop, which is in majority cases laborious job. After few
weeks, I realized I missed to install VMWare vSphere Client software to access
ESXi server. </span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Somehow I could find
that I had vSphere client version 5.5 in my previous laptop, and I just
installed latest "vSphere client version 5.5 U3". Then when I tried
to login, it stuck on "Updating" popup screen which finally failed to
do any progress with multiple tries. Well, I could not understand what it tries
to do --- The required client support files need to be retrieved from the
server "vsphereclient.vmware.com" and installed. Click Run the
installer or Save the installer???</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiipb88k9TZc-uczG36vsO113mAvbtOC_pL_s3kyL_Bhftte-HHht-xvWqqA6LZBznitxSwUnCfk59H-etCBl6gAjhh51QvD6y9TVJzX8FkgeFgAC6Lf80nyjwznkcLsX8ni1ce7E9MlUrO/s1600/VMWare-vSphere-Client-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiipb88k9TZc-uczG36vsO113mAvbtOC_pL_s3kyL_Bhftte-HHht-xvWqqA6LZBznitxSwUnCfk59H-etCBl6gAjhh51QvD6y9TVJzX8FkgeFgAC6Lf80nyjwznkcLsX8ni1ce7E9MlUrO/s320/VMWare-vSphere-Client-1.jpg" width="258" /></a></div>
<div style="margin-left: .75in; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">I tried to google
solution, but could not find anything useful. I tried uninstall and install
latest version 6.0, but could not solve it. This way, I wasted my almost 5
hours. Suddenly I realized, I should check version compatibility between ESXi
server and vSphere client. So I searched and found this url - <a href="http://partnerweb.vmware.com/comp_guide2/sim/interop_matrix.php" rel="nofollow" target="_blank">http://partnerweb.vmware.com/comp_guide2/sim/interop_matrix.php</a>.
Wow, finally I could fix this problem in just few minutes by installing VMWare
vSphere client version compatible to ESXi server 5.0 version.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiae0VoKmq8xq8u9jC-ubQLy9L2edzAoKFrFkmYcqSMlSoyfWznwK4maLp_qBvK7BDgKoOAeaAlooqfvSUhKBZDgQEjTi2JtpXMP41QvgvGIv6RZtVe3-2QH2zamDna5gUbOA4WRRzQ4Cpz/s1600/VMWare-vSphere-Client-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Arial, Helvetica, sans-serif;"><img border="0" height="267" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiae0VoKmq8xq8u9jC-ubQLy9L2edzAoKFrFkmYcqSMlSoyfWznwK4maLp_qBvK7BDgKoOAeaAlooqfvSUhKBZDgQEjTi2JtpXMP41QvgvGIv6RZtVe3-2QH2zamDna5gUbOA4WRRzQ4Cpz/s320/VMWare-vSphere-Client-2.jpg" width="320" /></span></a></div>
<div style="margin-left: .75in; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div style="font-size: 14pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div style="font-size: 14pt; margin: 0in;">
<span style="font-weight: bold; text-decoration: underline;"><span style="font-family: Arial, Helvetica, sans-serif;">Lesson Learned: </span></span></div>
<br />
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">While installing any
software products, if we see installation problems or it reacts weirdly, then
we should not forget to refer its version compatibility matrix... :-)</span></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-47610222709624917942015-06-13T15:43:00.001+05:302015-06-13T15:43:18.235+05:30Steps to create Scala project using Maven / Sbt and import in Eclipse ScalaIDE<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">If you are Java
developer and accustomed to use Eclipse IDE, you can consider below steps for
getting started with creating new Scala project.</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="text-decoration: underline;"><span style="color: #660000; font-family: Arial, Helvetica, sans-serif; font-size: large;">Prerequisites</span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;"><span style="font-family: Arial, Helvetica, sans-serif;">The Java Development Kit,
version 1.6.0 or newer</span></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://www.scala-lang.org/download/" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Install Scala</span></a><span style="font-size: 11pt;"> </span></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt;">Scala IDE - </span><a href="http://scala-ide.org/docs/user/gettingstarted.html" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Eclipse with Scala IDE installed</span></a></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt;">Choice of build tool - </span><a href="https://maven.apache.org/" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Maven</span></a><span style="font-size: 11pt;"> / </span><a href="http://www.scala-sbt.org/" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Sbt</span></a></span></li>
</ul>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">You can create Scala
project structure using your choice of build tool - Maven / SBT (scala's simple
build tool) - as per below steps. Then import the existing Scala project in
Scala IDE for getting started with Scala programming. </span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="text-decoration: underline;"><span style="color: #660000; font-family: Arial, Helvetica, sans-serif; font-size: large;">Create Scala project with
Maven</span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">If you already know
Maven, then below are quick steps to get you started with building and running
your Scala applications using Maven.</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">First of all,
install "<a href="https://github.com/sonatype/m2eclipse-scala" rel="nofollow" target="_blank">m2eclipse-scala</a>"
plugin in Scala IDE. Then go with one of below options.</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="text-decoration: underline;">Option 1</span>: Create project using Scala
IDE by following instructions given @ <a href="http://scala-ide.org/docs/tutorials/m2eclipse/" rel="nofollow" target="_blank">http://scala-ide.org/docs/tutorials/m2eclipse/</a></span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="text-decoration: underline;">Option 2</span>: Create project by executing
maven commands as below (Reference @ <a href="https://github.com/davidB/scala-archetype-simple" rel="nofollow" target="_blank">https://github.com/davidB/scala-archetype-simple</a>).</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">(1)
Generate "scala-mvn-helloworld" project structure using below Mavan
command. Ensure to change group id, artifact id and package as per your need.
Once you execute this command, it would create directory structure including
"pom.xml" file.</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 1.125in;">
<span style="font-family: Arial, Helvetica, sans-serif;">D:\Tirthal-LABs\Learning-Scala><span style="font-weight: bold;">mvn archetype:generate -B
-DarchetypeGroupId=net.alchim31.maven
-DarchetypeArtifactId=scala-archetype-simple -DarchetypeVersion=1.5 -DgroupId=</span><span style="color: #00b050; font-weight: bold;">com.tirthal.learning.scala</span><span style="font-weight: bold;"> -DartifactId=</span><span style="color: #00b050; font-weight: bold;">scala-mvn-helloworld</span><span style="font-weight: bold;">
-Dversion=0.1-SNAPSHOT -Dpackage=</span><span style="color: #00b050; font-weight: bold;">com.tirthal.learning.scala</span></span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 1.125in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">(2)
Execute maven command to compile scala --- <span style="font-weight: bold;">mvn
scala:compile</span></span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">(3)
Execute maven command to run and ensure correct package name, which should give
"Hello World!" output towards the bottom--- <span style="font-weight: bold;">mvn scala:run -DmainClass=</span><span style="color: #00b050; font-weight: bold;">com.tirthal.learning.scala</span><span style="font-weight: bold;">.App</span></span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">(4)
Import maven project in Scala IDE using
---
File -> Import -> Maven -> Existing Maven
Projects. Then run "App.scala" by right click option--- Run As ->
Scala Application.</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Sample maven based
scala project is available @ <a href="https://github.com/tirthalpatel/Learning-Scala/tree/master/scala-mvn-helloworld" rel="nofollow" target="_blank">https://github.com/tirthalpatel/Learning-Scala/tree/master/scala-mvn-helloworld</a>
</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="text-decoration: underline;"><span style="color: #660000; font-family: Arial, Helvetica, sans-serif; font-size: large;">Create scala project with
Sbt (simple build tool) </span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">If you want to try
Sbt (interactive build tool which has build-in defaults - compile, test, run
and many more…), then below are quick steps to get you started with building
and running your Scala applications using Sbt.</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">First of all, <a href="http://www.scala-sbt.org/0.13/tutorial/Setup.html" rel="nofollow" target="_blank">install sbt</a> and
add "D:\Softwares\scala\sbt-0.13.7\bin" in path variable of OS. Next,
</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">(1) Create
application folder --- D:\Tirthal-LABs\Learning-Scala><span style="font-weight: bold;"> mkdir </span><span style="color: #00b050; font-weight: bold;">scala-sbt-helloworld</span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">(2) Create necessary
sbt files in application folder using below commands in Windows (or you may create those files
manually) --- D:\Tirthal-LABs\Learning-Scala\scala-sbt-helloworld></span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">(2.1)
Run this command and add below three lines in build.sbt file --- <span style="font-weight: bold;">touch build.sbt && start build.sbt</span> </span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-weight: bold;">name := "</span><span style="color: #00b050; font-weight: bold;">scala-sbt-helloworld</span><span style="font-weight: bold;">"</span></span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">version := "0.1"</span></span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">scalaVersion := "2.11.6"</span></span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="text-decoration: underline;">Note</span>:
Here "scala-sbt-helloworld" name will be used for Eclipse
project name, while we'll execute "sbt eclipse" command further to
create project scaffolding. Also ensure to mention correct Scala version which
you have installed.</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">(2.2)
Create "project/build.properties" file by running this command and
add below one line in it --- <span style="font-weight: bold;">mkdir project
&& touch project\build.properties && start
project\build.properties</span> </span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">sbt.version = 0.13.7</span></span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="text-decoration: underline;">Note</span>: Here folder name must be
"project", which you cannot change to different name. Also ensure to
mention correct Sbt version which you have installed.</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">(2.3)
Create "project\plugins.sbt" file by running this command and add
below line in it --- <span style="font-weight: bold;">touch project\plugins.sbt
&& start project\plugins.sbt</span></span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">addSbtPlugin("com.typesafe.sbteclipse" %
"sbteclipse-plugin" % "3.0.0")</span></span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 1.125in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="text-decoration: underline;">Note</span>: This internally using Apache Ivy
- group name % artifact ID % version. Also ensure to mention correct version
compatible with your sbt version as given here - <a href="https://github.com/typesafehub/sbteclipse/" rel="nofollow" target="_blank">https://github.com/typesafehub/sbteclipse/</a>.</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">(3) Now run this
"sbt eclipse" command to create default eclipse project scaffolding
---
D:\Tirthal-LABs\Learning-Scala\scala-sbt-helloworld> <span style="font-weight: bold;">sbt eclipse</span></span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="text-decoration: underline;">Note</span>: You should see below lines on
command prompt, on successful project creation.</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;">[info]
Updating {file: /D:/Tirthal-LABs/Learning-Scala/scala-sbt-helloworld/
}scala-sbt-helloworld...</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;">[info]
Resolving org.scala-lang#scala-library;2.11.6 ...</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;"> [info] Resolving
org.scala-lang#scala-compiler;2.11.6 ...</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;"> [info] Resolving
org.scala-lang#scala-reflect;2.11.6 ...</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;"> [info] Resolving
org.scala-lang.modules#scala-xml_2.11;1.0.3 ...</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;"> [info] Resolving
org.scala-lang.modules#scala-parser-combinators_2.11;1.0.3 ...</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;"> [info] Resolving jline#jline;2.12.1 ...</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;">[info]
Done updating.</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;">[info]
Successfully created Eclipse project files for project(s):</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;">[info]
scala-sbt-helloworld</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">(4) Finally import
maven project in Scala IDE using ---
File -> Import -> General
-> Existing Projects into Workspace option. Then, under the folder
"src/main/scala" create "App.scala" hello world scala
program and run it by right click option--- Run As -> Scala Application.</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">object
App {</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;"> def main(args : Array[String]) {</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;"> println( "Hello World!" ) </span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;"> }</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">}</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">(5) Optional extra
steps --- As per your project need, you can add more SBT plugins - <a href="https://github.com/sbt" rel="nofollow" target="_blank">https://github.com/sbt</a>. For example, to add
dependency in project for test add "libraryDependencies" in build.sbt
file and run sbt, eclipse commands…</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">D:\Tirthal-LABs\Learning-Scala\scala-sbt-helloworld>
<span style="font-weight: bold;">start build.sbt</span></span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">libraryDependencies ++= Seq("org.scalatest"
% "scalatest_2.11" % "2.2.4" %"test",
"com.novocode" % "junit-interface" % "0.11" %
"test");</span></span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">>
<span style="font-weight: bold;">sbt</span> (this will load sbt)</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">>
<span style="font-weight: bold;">eclipse</span> (run eclipse task to incorporate
dependencies in Eclipse project configuration)</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">>
<span style="font-weight: bold;">~test</span> (this will compile, run the test
and show result. it will rerun again, when any change is done in the test
source code)</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;">[info]
Compiling 1 Scala source to
D:\Tirthal-LABs\Learning-Scala\scala-sbt-helloworld\target\scala-2.11\classes...</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;">[info]
ScalaTest</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;">[info]
Run completed in 151 milliseconds.</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;">[info]
Total number of tests run: 0</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;">[info]
Suites: completed 0, aborted 0</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;">[info]
Tests: succeeded 0, failed 0, canceled 0, ignored 0, pending 0</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span style="font-family: Arial, Helvetica, sans-serif;">[info]
No tests were executed.</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 1.125in;">
<br /></div>
<br />
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Sample sbt based
scala project is available @ <a href="https://github.com/tirthalpatel/Learning-Scala/tree/master/scala-sbt-helloworld" rel="nofollow" target="_blank">https://github.com/tirthalpatel/Learning-Scala/tree/master/scala-sbt-helloworld</a></span></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-7845298255441449212015-03-08T15:14:00.000+05:302015-09-12T15:23:50.430+05:30Tactics to improve Java development productivity<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Today I read <a href="http://www.javacodegeeks.com/2015/02/java-development-tools-programming-boost.html" rel="nofollow" target="_blank">java development tools/frameworks for a programming boost</a> article by Theodora
Fragkouli. This inspired me to publish highlights of the training, I imparted
in last month to java developers, on "Tactics to improve
productivity in Java" topic. </span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">The scope of this
training was stringent to relate Java technical viewpoints, and obviously
excluded thoughts of generic ways to boost productivity, i.e. do
yoga/meditation regularly, 15 minutes power nap at work, having cup of
tea/coffee... :-)</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">The objective of
this training was to make participants familiar with few notable <span style="text-decoration: underline;">tools, techniques and programming
considerations focused to boost java developers productivity</span>. I focused
mainly on three areas. </span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">(1)
<span style="font-weight: bold;">Save time on java app compile, build and
redeploy process</span>.</span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">(2)
<span style="font-weight: bold;">Efficient ways to analyze or review
existing/legacy java code.</span></span></div>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<span style="font-family: Arial, Helvetica, sans-serif;">(3)<span style="font-weight: bold;"> Less code means more productivity.</span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">I demonstrated
following tips practically in the training, which java developers should adopt
for being more productive (* as applicable in the given project architecture
and development environment).</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="background-color: white; font-family: Calibri; font-size: 14.6667px; line-height: 20.5333px;">Before I start, I hope that you have already read "</span><a href="http://tirthalpatel.blogspot.in/2013/12/java-power-tools-series-preface.html" style="background-color: white; font-family: Calibri; font-size: 14.6667px; line-height: 20.5333px;" target="_blank">Preface</a><span style="background-color: white; font-family: Calibri; font-size: 14.6667px; line-height: 20.5333px;">" of my java power tools series.</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="text-decoration: underline;"><span style="color: #660000; font-family: Arial, Helvetica, sans-serif; font-size: large;">Tools and Techniques to
improve productivity</span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold; text-decoration: underline;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></span>
<span style="font-weight: bold; text-decoration: underline;"><span style="font-family: Arial, Helvetica, sans-serif;">View Java code changes
instantly using JVM HotSwap / class reloading tools</span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Problem = By nature, if we do
even single line of code change in java, we must need to wait for few
seconds to minutes to test it until application is built and redeployed on
server. </span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Solution = JVM Hotswap or
class reloading tools can help us to save time at certain extent, i.e. add
and update java classes instantly without waiting on java app compile,
build and redeploy process.</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt; font-weight: bold;">JRebel</span><span style="font-size: 11pt;"> (commercial) is superior
than Hotswap Agent. </span><a href="http://tirthalpatel.blogspot.in/2014/05/tips-to-boost-java-developer-productivity-using-tools.html" target="_blank"><span style="font-size: 11pt;">You may read my another post for further information on JRebel</span></a><span style="font-size: 11pt;">.</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt; font-weight: bold;">Hotswap
Agent</span><span style="font-size: 11pt;"> (free) is
awesome compare to other free alternatives such as DCE VM, Spring-loaded,
Fakereplace. </span><a href="http://tirthalpatel.blogspot.in/2014/06/steps-to-setup-hotswap-agent-in-eclipse.html" target="_blank"><span style="font-size: 11pt;">You may read my another post to see Hotswap Agent in action</span></a><span style="font-size: 11pt;">.</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;"><span style="font-family: Arial, Helvetica, sans-serif;">In general, I suggest such
tool to use during development. Be cautious to use it in production, until
you need to accomplish exceptional use case!</span></span></li>
</ul>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold; text-decoration: underline;"><span style="font-family: Arial, Helvetica, sans-serif;">Reverse Engineering
technique and tools</span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Useful to improve design
documents of legacy systems or efficient way of exploring code from the
generated diagrams (e.g. class and sequence). </span></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt; font-weight: bold;">Static
reverse engineering using ObjectAid </span><span style="font-size: 11pt;">(free for class diagram), i.e. generating diagrams from
existing codebase.</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt; font-weight: bold;">Runtime
reverse engineering using Maintainj </span><span style="font-size: 11pt;">(commercial), i.e. firstly perform functional operation
in running application and capture corresponding code flow traces, then
explore the generated diagrams for the given executed use case and finally
from diagrams navigate the exact code.</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://tirthalpatel.blogspot.in/2014/07/java-reverse-engineering-and-diagramming-tools.html" target="_blank"><span style="font-size: 11pt;">You may read my another post for more detail on diagramming and reverse engineering tools</span></a><span style="font-size: 11pt;">.</span></span></li>
</ul>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold; text-decoration: underline;"><span style="font-family: Arial, Helvetica, sans-serif;">Static code analysis tools
& Dependency analysis technique</span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt;">Make manual or automated code
review effectively using SonarQube (</span><a href="http://docs.sonarqube.org/display/SONAR/Developers%27+Seven+Deadly+Sins" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Developers' Seven Deadly Sins</span></a><span style="font-size: 11pt;">)</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt;">Generate </span><span style="font-size: 11pt; font-weight: bold;">Dependency
graphs using Codepro Analytix </span><span style="font-size: 11pt;">(free)</span><span style="font-size: 11pt; font-weight: bold;"> </span><span style="font-size: 11pt;">or</span><span style="font-size: 11pt; font-weight: bold;"> Dependency structure matrix (DSM) using SonarQube</span><span style="font-size: 11pt;"> (free) from existing or
legacy codebase to detect cyclic
dependencies and empower the impact analysis for refactoring /
reengineering / modernization, etc. Just google further, you would find
many references to understand fundamental of these dependency analysis
techniques using the mentioned tools.</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt;">Interactive development using
superior visual diagrams and </span><span style="font-size: 11pt; font-weight: bold;">CQLinq feature of JArchitect</span><span style="font-size: 11pt;"> (commercial).</span></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://tirthalpatel.blogspot.in/2014/01/static-code-analyzers-preface.html" rel="" target="_blank"><span style="font-size: 11pt;">You may read my another series of blog posts on static code analyzers</span></a><span style="font-size: 11pt;">. </span></span></li>
</ul>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold; text-decoration: underline;"><span style="font-family: Arial, Helvetica, sans-serif;">Miscellaneous</span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://tirthalpatel.blogspot.in/2015/01/java-dev-efficient-eclipse-plugins.html" rel="" target="_blank"><span style="font-size: 11pt;">Enrich Eclipse IDE by adding extra Eclipse plugins</span></a><span style="font-size: 11pt;"> - Code Recommenders + Snipmatch (code recommendation
and a snippet completion engine), InstaSearch (fast text search in the
workspace), MouseFeed (helps to form a habit of using keyboard shortcuts),
JD-Eclipse (java decompiler), etc.</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://chrononsystems.com/" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Cronon</span></a><span style="font-size: 11pt;"> (commercial) - a DVR for Java, offers to record your
entire java program and replay on any machine.</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://www.programcreek.com/java-api-examples/" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Search for Java API example</span></a><span style="font-size: 11pt;"> - Excellent online interface
to search for sample code snippets for the given java API (e.g. </span><a href="http://www.programcreek.com/java-api-examples/index.php?api=org.springframework.web.servlet.ModelAndView" rel="nofollow" target="_blank"><span style="font-size: 11pt;">org.springframework.web.servlet.ModelAndView</span></a><span style="font-size: 11pt;">) and see how that API is
used in various open source frameworks.</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://stackifier.takipi.com/" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Stackifier</span></a><span style="font-size: 11pt;"> - A web page to make sense of verbose Java/Scala
exception stack trace by translating into the simplified UI.</span></span></li>
</ul>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="text-decoration: underline;"><span style="color: #660000; font-family: Arial, Helvetica, sans-serif; font-size: large;">Less code means more
productivity</span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">Less lines of code
means more productivity, and also less efforts to unit test and maintain the
code. Now the question is - what could be programming considerations for this?
Here we go...</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-weight: bold;"><u>Polyglot programming on the JVM</u></span> </span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: 11pt;">Have you ever
thought to mix-and-match multiple programming languages in a single
application? Well, the phrase polyglot programming on the JVM was coined
to describe projects that utilize one or more non-Java JVM (Java Virtual
Machine) languages (e.g. Scala, Groovy, Clojure, Jython, Jruby,
JavaScript...) alongside a core of Java code. All in all, it is better to
use the right programming language to do the right job.</span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt; font-weight: bold;">Polyglot
Programming with respect to Java platform </span><span style="font-size: 11pt;">--- </span><span style="font-size: 11pt; font-weight: bold;">Java SE 6</span><span style="font-size: 11pt;">: added specification for
supporting multiple scripting languages in JSR-223, which encouraged
acceptance of many popular open source languages on JVM runtime by just
implementing scripting engine of given language. Also it allows java
developers to call non-java scripting language (e.g. JavaScript, Groovy…)
code from java code and vice versa. </span><span style="font-size: 11pt; font-weight: bold;">Java SE 7</span><span style="font-size: 11pt;">: added JSR-292 to enable
developers of compilers for dynamically typed languages to generate
bytecode that runs extremely fast in the JVM. </span><span style="font-size: 11pt; font-weight: bold;">Java SE 8</span><span style="font-size: 11pt;">: replaced default “Mozilla
Rhino” JS scripting engine with new highly performant “Oracle Nashorn”
engine.</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt;">The Java specification
doesn't talk about how the different languages should be organized in
enterprise application architecture! So in general the polyglot
programming environment can be categorized in three layers from
architectural standpoint, so-called </span><span style="font-size: 11pt; font-weight: bold;">polyglot programming pyramid</span><span style="font-size: 11pt;"> --- (1) </span><span style="font-size: 11pt; font-weight: bold;">Stable layer</span><span style="font-size: 11pt;"> - The stable layer is what
everything else is built on top of, and should preferably be a thin
foundation. Statically typed language (Java, Scala) is suited for this
layer, as performance and stability is of the utmost importance. All
interfaces to external applications are also defined in this layer, as
this will provide type safety and enable other clients to trust it.
Example use cases are: Core business functionality, Concurrent code,
Application containers… (2) </span><span style="font-size: 11pt; font-weight: bold;">Dynamic layer</span><span style="font-size: 11pt;"> - The dynamic layer is
consisting of most the application code. Languages from all the paradigms
can be used, as long as they are dynamic and do not require compilation
such as Groovy, Clojure and many more.
Example use cases are: Rapid web development, Prototyping, Flexible
development of functionality, Interactive administrative and user
consoles, Scripting… (3) </span><span style="font-size: 11pt; font-weight: bold;">Domain layer</span><span style="font-size: 11pt;"> - The domain layer is tightly coupled to a
specific part of the application and should offer to change rules in
production. It can be consist of one or more DSLs (domain specific
language) to define the actual domain rules. Example use cases are: Enterprise
Integration Pattern modeling, Business rules modeling, Build, Continuous
integration, Continuous deployment, Dev-ops… For more detail, you should
read </span><a href="http://www.manning.com/evans/excerpt_contents.html" rel="nofollow" target="_blank"><span style="font-size: 11pt;">The Well-Grounded Java Developer - Part 3</span></a><span style="font-size: 11pt;">.</span></span></li>
</ul>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;"><u>Groovy</u></span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt;">Java is strongly, statically
typed programming language. It is not suitable for all type of use cases.
For example, while </span><a href="https://github.com/tirthalpatel/Learning-Groovy/blob/master/src/com/tirthal/learning/java2groovy/G04_ExecuteProcessGroovyWay.groovy" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Groovy may require x lines of code</span></a><span style="font-size: 11pt;"> to
accomplish some task, </span><a href="https://github.com/tirthalpatel/Learning-Groovy/blob/master/src/com/tirthal/learning/java2groovy/G03_ExecuteProcessJavaWay.groovy" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Java may require 10x lines of code</span></a><span style="font-size: 11pt;"> to
accomplish the same.</span></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Groovy brings
high-productivity language features to the JVM including support for
static and dynamic programming, scripting, and domain-specific languages.</span></span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt;">You may read my another post
about, </span><a href="http://tirthalpatel.blogspot.in/2014/06/why-java-developers-should-learn-Groovy.html" target="_blank"><span style="font-size: 11pt;">why Java developer should learn another programming language called Groovy?</span></a></span></li>
</ul>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;"><u>Java 5 -> Java 8</u></span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://tirthalpatel.blogspot.in/2014/05/new-to-java-getting-started-guide.html" target="_blank"><span style="font-size: 11pt;">If you are new to Java, you may refer my another post on getting started guide with Java</span></a><span style="font-size: 11pt;">. Anyway the
point is that, there are some programming features focused to improve
developer productivity with the release of each major version such as...</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Java 5 (Released in Sep 2004)
– Generics, Autoboxing, Enhanced for loop, Annotations…</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Java 6 (Released in Dec 2006)
– Scripting in the Java Platform…</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-size: 11pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Java 7 (Released in Jul 2011)
– Project coin features…</span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt;">Java 8 (Released in Mar 2014)
– includes </span><a href="http://www.oracle.com/technetwork/java/javase/overview/java8-2100321.html" rel="nofollow" target="_blank"><span style="font-size: 11pt;">features for productivity, ease of use, improved polyglot programming</span></a><span style="font-size: 11pt;">, security and improved
performance. For example, see sample code authored by Venkat Subramaniam
for </span><a href="https://github.com/tirthalpatel/Learning-Java/blob/master/Java8/src/com/xtra_ref/transforming_code_to_java_8/exercise_2/before/Sample.java" rel="nofollow" target="_blank"><span style="font-size: 11pt;">prior to Java 8</span></a><span style="font-size: 11pt;"> vs. </span><a href="https://github.com/tirthalpatel/Learning-Java/blob/master/Java8/src/com/xtra_ref/transforming_code_to_java_8/exercise_2/after/Sample.java" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Java 8 way</span></a><span style="font-size: 11pt;"> to find square root of first
and last numbers of the first 100 prime numbers.</span></span></li>
</ul>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;"><u>Java EE 7</u></span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt;">Please refer </span><a href="http://www.slideshare.net/arungupta1/java-ee7-1hour" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Slide 4 of Boosting Productivity and Embracing HTML5</span></a><span style="font-size: 11pt;"> PPT. Developer productivity is one of the key rubrics
of Java EE 7 referring to more annotated POJOs, Less boilerplate code and
Cohesive integrated platform. To explore practically, you may refer </span><a href="https://github.com/javaee-samples/javaee7-samples" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Java EE 7 samples on Github</span></a><span style="font-size: 11pt;">.</span></span></li>
</ul>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;"><u>Spring Data</u></span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt;">Provides </span><a href="http://www.infoq.com/articles/spring-data-intro" rel="nofollow" target="_blank"><span style="font-size: 11pt;">efficient approach to data access</span></a><span style="font-size: 11pt;"> –
relational, non-relational, map-reduce and beyond. Its most compelling
feature is the ability to create repository implementations automatically,
at runtime, from a repository interface. </span></span></li>
</ul>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt;">See </span><a href="https://spring.io/guides/gs/accessing-data-jpa/" rel="nofollow" target="_blank"><span style="font-size: 11pt;">"create simple queries" section to realize accessing data using Spring Data JPA needs just minimal efforts</span></a><span style="font-size: 11pt;">. Or refer </span><a href="https://github.com/spring-projects/spring-petclinic/tree/master/src/main/java/org/springframework/samples/petclinic/repository" rel="nofollow" target="_blank"><span style="font-size: 11pt;">DAO (repository) layer in Spring petclinic sample app</span></a><span style="font-size: 11pt;"> to see difference in "total lines of code"
among </span><a href="https://github.com/spring-projects/spring-petclinic/blob/master/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcVetRepositoryImpl.java" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Spring JDBC</span></a><span style="font-size: 11pt;"> vs. </span><a href="https://github.com/spring-projects/spring-petclinic/blob/master/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVetRepositoryImpl.java" rel="nofollow" target="_blank"><span style="font-size: 11pt;">JPA</span></a><span style="font-size: 11pt;"> vs. </span><a href="https://github.com/spring-projects/spring-petclinic/blob/master/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataVetRepository.java" rel="nofollow" target="_blank"><span style="font-size: 11pt;">Spring Data</span></a><span style="font-size: 11pt;"> implementation approach.</span></span></li>
</ul>
<div style="font-size: 11pt; margin: 0in 0in 0in 0.375in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">There are many more
technological considerations for writing less code. Anyway to make a long story
short, Java developers should keep upgrading their skills to harness the power
of modern technologies and frameworks for writing code that is more compact,
simpler, and easier to maintain.</span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="text-decoration: underline;"><span style="color: #660000; font-family: Arial, Helvetica, sans-serif; font-size: large;">Final Thoughts</span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div style="margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 11pt;">Every project has
its own architecture and development environment. So all the </span><span style="font-size: 14.6666669845581px;">above-mentioned</span><span style="font-size: 11pt;"> technical aspects may not be applicable to each and every project. Anyway here
is the crux... </span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhY5odRlCPEmYDa5g7VNj2uO0GyXLuKaIsncnRzNXQx_nFEHqtwBgfmkNdM-KZgsGL76a6LCSWHQHJZ6CozEnMK-7LjWAL0Raw7lkjRV9ffo_o4yflPvDVwE1roqU0UIDJn8-Hi-mHkGNkm/s1600/Java-Improve-Dev-Productivity.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhY5odRlCPEmYDa5g7VNj2uO0GyXLuKaIsncnRzNXQx_nFEHqtwBgfmkNdM-KZgsGL76a6LCSWHQHJZ6CozEnMK-7LjWAL0Raw7lkjRV9ffo_o4yflPvDVwE1roqU0UIDJn8-Hi-mHkGNkm/s1600/Java-Improve-Dev-Productivity.png" /></a></div>
<div style="margin-left: .375in; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="color: blue; font-size: 11pt; margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: Arial, Helvetica, sans-serif;">Finally please do share your experience in the
comment, if you know any additional tactic applicable to improve java developer
productivity.</span></span></div>
<div style="color: blue; font-size: 11pt; margin: 0in;">
<br /></div>
<div style="margin: 0in;">
<span style="text-decoration: underline;"><span style="color: #660000; font-family: Arial, Helvetica, sans-serif; font-size: large;">Disclaimer</span></span></div>
<br />
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: Arial, Helvetica, sans-serif;">I am not biased to
particular free or commercial tools and frameworks, rather my objective is
about sharing my own experience on the this topic. </span></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com0tag:blogger.com,1999:blog-5763268233914970621.post-63990189205408892622015-01-25T17:19:00.000+05:302017-06-11T15:32:35.206+05:30Java power tools series - Extra plugins to enrich Eclipse IDE<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">I hope, you have
already read "<a href="http://tirthalpatel.blogspot.in/2013/12/java-power-tools-series-preface.html" style="background-color: white;" target="_blank">Preface</a>"
of my java power tools series. </span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">I love using
Eclipse, but it is perturbing to upgrade it. Because every time we need to
install numerous extra plugins to enrich its standard ability. Besides this, we
need to recollect what all plugins to be installed in new Eclipse version. So I
thought to publish a post to list Eclipse plugin names which I rely on
regularly or occasionally for my own future reference. I hope below Eclipse
plugins listing may benefit other java developers too. </span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div style="margin: 0in;">
<span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><u>Eclipse Plugins</u></span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif; font-size: large; text-decoration: underline;"><br /></span></div>
<div style="direction: ltr;">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-color: #A3A3A3; border-style: solid; border-width: 1pt; direction: ltr; margin-left: .3333in;" valign="top">
<tbody>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.5388in;"><div style="font-size: 11pt; margin: 0in;">
<br /></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 3.0111in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Free</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.6756in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Commercial</span></span></div>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.5388in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Development</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 3.0111in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="https://www.liferay.com/downloads/liferay-projects/liferay-ide" rel="nofollow" target="_blank">Liferay IDE</a> - for building plugins for the Liferay Portal </span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="https://spring.io/tools" rel="nofollow" target="_blank">Spring & Groovy Tool Suite</a> - STS for </span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">for developing
Spring applications & GGTS for developing, debugging and executing
Groovy and Grails applications</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://tools.jboss.org/features/index.html" rel="nofollow" target="_blank">JBoss Tools</a> - like <a href="http://hibernate.org/tools/" rel="nofollow" target="_blank">Hibernate Tools</a> provides tooling for
JPA and HQL</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://groovy.codehaus.org/Eclipse+Plugin" rel="nofollow" target="_blank">Plugin for Groovy</a> -
provides Eclipse support for Groovy projects</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://scala-ide.org/" rel="nofollow" target="_blank">Scala IDE</a> - provides advanced editing and
debugging support for the development of pure Scala and mixed Scala-Java
applications</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="https://github.com/angelozerr/angularjs-eclipse" rel="nofollow" target="_blank">AngularJS</a> -
Eclipse plugin for AngularJS projects</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.6756in;"><div style="font-size: 11pt; margin: 0in;">
<br /></div>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.5388in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-weight: bold;">Static Code Analysis </span>(<a href="http://tirthalpatel.blogspot.in/2014/01/static-code-analyzers-preface.html" target="_blank"><b style="background-color: lime;">For more detail, please read my another blog post</b></a>)</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 3.0111in;"><div style="font-size: 11pt; margin: 0in;">
<a href="http://marketplace.eclipse.org/content/sonarqube" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">SonarQube</span></a></div>
<div style="font-size: 11pt; margin: 0in;">
<a href="http://marketplace.eclipse.org/content/codepro-analytix" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Codepro Analytix</span></a></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://marketplace.eclipse.org/content/checkstyle-plug" rel="nofollow" target="_blank"><span style="background: white;">Checkstyle Plug-in</span></a><span style="background: white;"> </span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://marketplace.eclipse.org/content/pmd-eclipse" rel="nofollow" target="_blank"><span style="background: white;">PMD Plugin for Eclipse</span></a><span style="background: white;"> </span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://marketplace.eclipse.org/content/findbugs-eclipse-plugin" rel="nofollow" target="_blank"><span style="background: white;">FindBugs Eclipse Plugin</span></a><span style="background: white;"> </span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://marketplace.eclipse.org/content/unnecessary-code-detector" rel="nofollow" target="_blank"><span style="background: white;">Unnecessary Code Detector</span></a> - Dead code
analysis</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://h3xstream.github.io/find-sec-bugs/" rel="nofollow" target="_blank">FindSecurityBugs</a><span style="background: white;">, </span><a href="https://code.google.com/p/lapse-plus/" rel="nofollow" target="_blank">LAPSE+</a> <span style="background: white;">- Code security analysis</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.6756in;"><div style="font-size: 11pt; margin: 0in;">
<br /></div>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.5388in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Unit testing and Code Coverage</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 3.0111in;"><div style="font-size: 11pt; margin: 0in;">
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="https://infinitest.github.io/" rel="nofollow" target="_blank">Infinitest</a> - Greatly works with TDD. </span><span style="font-family: arial, helvetica, sans-serif; font-size: 11pt;">Each time a change
is made on the source code, Infinitest runs all the tests that might fail
because of these changes.</span></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="background: white;"><a href="http://marketplace.eclipse.org/content/moreunit" rel="nofollow" target="_blank">MoreUnit</a></span><span style="background: white;"> - Shortcuts to switch between tests and classes under
tests, create test stubs, mock support, decoration, refactoring support</span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://marketplace.eclipse.org/content/eclemma-java-code-coverage" rel="nofollow" target="_blank"><span style="background: white;">EclEmma Java Code Coverage</span></a> - a Java code
coverage tool for Eclipse</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.6756in;"><div style="font-size: 11pt; margin: 0in;">
<br /></div>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.5388in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Productivity</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 3.0111in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://marketplace.eclipse.org/content/instasearch" rel="nofollow" target="_blank"><span style="background: white;">InstaSearch</span></a> -
fast text search in the workspace</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://marketplace.eclipse.org/content/eclipse-code-recommenders" rel="nofollow" target="_blank"><span style="background: white;">Eclipse Code Recommenders</span></a> + <a href="http://marketplace.eclipse.org/content/snipmatch" rel="nofollow" target="_blank"><span style="background: white;">Snipmatch</span></a> - code recommendation and a
snippet completion engine</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://marketplace.eclipse.org/content/mousefeed" rel="nofollow" target="_blank"><span style="background: white;">MouseFeed</span></a> -
Helps to form a habit of using keyboard shortcuts</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://jautodoc.sourceforge.net/" rel="nofollow" target="_blank">JAutodoc</a> - For automatically
adding Javadoc and file headers to your source code</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.6756in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://zeroturnaround.com/software/jrebel/quickstart/eclipse/" rel="nofollow" target="_blank"><span style="background: white;">JRebel</span></a><span style="background: white;"> -
Live code reload. Eliminates need to build your app to see changes</span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">(<a href="http://tirthalpatel.blogspot.in/2014/05/tips-to-boost-java-developer-productivity-using-tools.html" target="_blank"><b style="background-color: lime;">For more detail, please read my another blog post</b></a>)</span></div>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.5388in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Diagramming and Reverse Engineering</span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">(<a href="http://tirthalpatel.blogspot.in/2014/07/java-reverse-engineering-and-diagramming-tools.html" style="background-color: lime;" target="_blank"><b>F</b><b>or more detail, please read my another blog post</b></a>)</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 3.0111in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://marketplace.eclipse.org/content/diver-dynamic-interactive-views-reverse-engineering" rel="nofollow" target="_blank">Diver</a>,
<a href="http://www.cse.buffalo.edu/jive/download.html" rel="nofollow" target="_blank">Jive</a> - Runtime
sequence diagrams generation </span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://marketplace.eclipse.org/content/objectaid-uml-explorer" rel="nofollow" target="_blank">ObjectAid</a>
- Reverse engineering for class diagram generation</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://marketplace.eclipse.org/content/modelgoon-uml4java" rel="nofollow" target="_blank">ModelGoon</a>-
Generate various UML diagrams from code</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://drupal.bundlemaker.org/" rel="nofollow" target="_blank">BundleMaker</a><span style="background: white;"> - Dependency analysis</span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<a href="http://marketplace.eclipse.org/node/609100" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Jar2UML</span></a></div>
<div style="font-size: 11pt; margin: 0in;">
<a href="http://marketplace.eclipse.org/content/dr-garbage-community" rel="nofollow" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Dr. Garbage Tools</span></a></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.6756in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://maintainj.com/" rel="nofollow" target="_blank">Maintainj</a> - Runtime sequence and class
diagrams generation and debugging</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://www.architexa.com/" rel="nofollow" target="_blank">Architexa</a> - Generate layered, class and
sequence diagrams from code</span></div>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.5388in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Performance Analysis</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 3.0111in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://www.oracle.com/technetwork/java/javaseproducts/mission-control/index.html" rel="nofollow" target="_blank">Java Mission Control</a> - A set of plugins designed to help develop, profile and
diagnose applications running on the Oracle Java HotSpot VM</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://visualvm.java.net/eclipse-launcher.html" rel="nofollow" target="_blank">VisualVM</a> - for
monitoring and profiling of java applications</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://marketplace.eclipse.org/content/lockness-thread-dump-analyser" rel="nofollow" target="_blank">Lockness</a>
- Java thread dumps analysis</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://marketplace.eclipse.org/content/mat" rel="nofollow" target="_blank">MAT</a> - Java head dump
analyzer</span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.6756in;"><div style="font-size: 11pt; margin: 0in;">
<br /></div>
</td>
</tr>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 1.5388in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-weight: bold;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Miscellaneous</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 3.0111in;"><div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://jd.benow.ca/" rel="nofollow" target="_blank">JD-Eclipse</a> - Java decompiler</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://marketplace.eclipse.org/content/easyshell" rel="nofollow" target="_blank">EasyShell</a> -
Offers tight integration of system file manager (Windows Explorer, Gnome
Nautilus, KDE Konqueror, Mac Finder, ...) and shell (cmd.exe, Linux/Mac
terminal) in Eclipse</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="https://code.google.com/p/eclipse-fonts/" rel="nofollow" target="_blank"><span style="background: white;">Eclipse-fonts</span></a> - Increase/decrease font-size in editor</span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://marketplace.eclipse.org/content/anyedit-tools" rel="nofollow" target="_blank"><span style="background: white;">AnyEdit Tools</span></a><span style="background: white;"> - Convert, compare, sort etc.</span></span></div>
</td>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 2.6756in;"><div style="font-size: 11pt; margin: 0in;">
<br /></div>
</td>
</tr>
</tbody></table>
</div>
<div style="margin: 0in;">
<div style="font-size: 11pt;">
<br /></div>
<div style="font-family: Calibri; margin: 0in;">
<span style="text-decoration-line: underline;"><span style="color: #660000; font-size: large;">Updates History</span></span></div>
<div style="font-size: 11pt;">
<b style="color: blue; font-family: Arial, Helvetica, sans-serif; font-size: 14.6666669845581px;">
</b></div>
<ul style="direction: ltr; font-size: 11pt; margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: "calibri"; font-size: 11.0pt;">20/May/2017 - Added
Infinitest for unit testing</span></li>
</ul>
<div style="font-size: 11pt;">
<b style="color: blue; font-family: Arial, Helvetica, sans-serif; font-size: 14.6666669845581px;"><br /></b></div>
<div style="font-size: 11pt;">
<b style="color: blue; font-family: Arial, Helvetica, sans-serif; font-size: 14.6666669845581px;"><br /></b>
<b style="color: blue; font-family: Arial, Helvetica, sans-serif; font-size: 14.6666669845581px;">If you know or have experienced any other outstanding Eclipse plugin, please share the name of the plugin in the comment.</b></div>
<div style="font-size: 11pt;">
<b style="color: blue; font-family: Arial, Helvetica, sans-serif; font-size: 14.6666669845581px;"><br /></b></div>
</div>
<div style="margin: 0in;">
<span style="text-decoration: underline;"><span style="color: #660000; font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Disclaimer</span></span></div>
<div style="font-size: 11pt; margin: 0in;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">I am not biased to
particular free or commercial tools, rather my objective is about sharing my
own experience on set of tools. </span></div>
<div style="font-size: 11pt; margin: 0in;">
<br /></div>
</div>
Tirthal Patelhttp://www.blogger.com/profile/02750015264204318388noreply@blogger.com1