{"id":418,"date":"2011-05-09T21:35:00","date_gmt":"2011-05-09T21:35:00","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/2012\/10\/reasons-why-solaris-is-a-great-java-development-platform.html"},"modified":"2012-10-21T19:45:35","modified_gmt":"2012-10-21T19:45:35","slug":"solaris-java-development-platform","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html","title":{"rendered":"Reasons Why Solaris Is a Great Java Development Platform"},"content":{"rendered":"<div dir=\"ltr\" style=\"text-align: left\">\n<div>Some days ago I posted &#8220;<a href=\"http:\/\/thegreyblog.blogspot.com\/2010\/09\/opensolaris-brand-is-dead.html\" id=\"ddz1\" title=\"The Death of OpenSolaris: Choosing an OS for a Java Developer\">The Death of OpenSolaris: Choosing an OS for a Java Developer<\/a>&#8221;  in which I stated that Solaris is a great platform for a Java  developer. The point of that post was simply wondering about which  Solaris version I&#8217;d use since the demise of OpenSolaris. What the post  did fail in clarifying, as Neil&#8217;s comment made me realize, were the  reasons why you should choose Solaris as your development platforms.&nbsp;<\/div>\n<div>I  decided to write this follow up to that post to quickly summarize my  favorite ones introducing some use cases where such technologies come in  handy.<\/p>\n<p><span class=\"Apple-style-span\" style=\"font-size: 24px;font-weight: bold\">Software Availability<\/span><br \/>\nAlthough Solaris continues  to be a niche OS (such as many other platforms are, anyway) in the last  few years Sun and the community made an excellent job at promoting it as  a desktop alternative for developers. There existed even a specific  distribution for developers: <i>Solaris Express Developer Edition<\/i>.  It was discontinued and there really is no need for it nowadays, anyway.  Late Solaris distributions (such as SXCE, OpenSolaris, OpenIndiana),  include (either bundled or in the official package repository):<\/p>\n<ul>\n<li>Data bases (MySQL, PostgreSQL).<\/li>\n<li>Web Servers (Apache, Java Enterprise System Web Server, etc.).<\/li>\n<li>Application servers (Glassfish).<\/li>\n<li>The SAMP stack (Solaris + Apache + MySQL + PHP).<\/li>\n<li>IDEs (NetBeans, Eclipse).<\/li>\n<li>Support for other popular languages (Ruby, Groovy, etc.).<\/li>\n<li>Identity management (LDAP, Java Enterprise System Identity Server).<\/li>\n<\/ul>\n<p>Solaris  also is a platform of choice in the enterprise hence common enterprise  software packages are supported and you, as a Java developer or Java  architect, won&#8217;t miss the pieces you need to build your development  environment. The very basic software packages I often need as a Java  developers are:<\/p>\n<ul>\n<li>Oracle RDBMS.<\/li>\n<li>Oracle WebLogic Application Server.<\/li>\n<li>IBM WebSphere Application Server.<\/li>\n<li>JBoss Application Server.<\/li>\n<\/ul>\n<h2>Solaris&#8217; Technologies<\/h2>\n<p>Solaris  has got some unique technologies that other UNIX (and UNIX-like)  systems that might be used as development platforms are lacking (or  ported from Solaris.) What&#8217;s important here is not &#8220;technologies on  their own&#8221; or technologies that are helpful only in big enterprise  environments, but the fact that:<\/p>\n<ul>\n<li>They&#8217;re pretty well integrated in Solaris and are built to take advantage of each other.<\/li>\n<li>There are common use cases in which these technologies are really helpful to a developer.<\/li>\n<\/ul>\n<p>Each one of them would deserve several posts on their own, however, I&#8217;ll try to make some concise examples.<\/p>\n<h3>Solaris Service Management Facility<\/h3>\n<p>Although  this technology is probably most useful to a system administrator, as a  developer I often took advantage of it. SMF is a framework that  provides a unified model for services and services management. The basic  recipe only needs an XML descriptor for a service. SMF lets you:<\/p>\n<ul>\n<li>Define a service: startup scripts location, parameters and semantics.<\/li>\n<li>Establish dependencies between services:<\/li>\n<ul>\n<li>Services and service instances may depend on other service instances.<\/li>\n<li>Service startup is preformed in parallel respecting service dependencies.<\/li>\n<\/ul>\n<li>Enhanced security and fine-grained role based access control:<\/li>\n<ul>\n<li>A service can be assigned only the minimum required set of privileges it needs to run.<\/li>\n<li>Service management can be delegated to non-root users using Solaris RBAC (Role-Based Access Control).<\/li>\n<\/ul>\n<li>Service health control:<\/li>\n<ul>\n<li>Service auto-restarts.<\/li>\n<li>Service  health is enhanced by cooperation with Solaris Fault Manager which  prevents service degradation when hardware failures occur.<\/li>\n<\/ul>\n<li>Automatic inetd Services Wrapper: SMF automatically wraps inetd services.<\/li>\n<\/ul>\n<h4>A Typical Use Case<\/h4>\n<p>Every  software package I use has its own SMF descriptor (either provided with  the package or defined by me) and it dramatically reduces the time I  need to set up a development machine. In the case of WebSphere  Application Server, for example, I have separate service instances for:<\/p>\n<ul>\n<li>WebSphere IHS.<\/li>\n<li>WebSphere Application Server.<\/li>\n<li>WebSphere Application Server DMGR.<\/li>\n<li>WebSphere Application Server cluster nodes.<\/li>\n<\/ul>\n<p>Dependencies are defined between them and I can startup the required WebSphere services with just a line of code:<\/p>\n<p><span style=\"font-family: 'courier new'\">svcadm enable [websphere-service-name]<\/span><\/p>\n<p>and SMF will take care of everything.<\/p>\n<p>The  usage pattern for SMF can be enhanced further. Let&#8217;s suppose you&#8217;re  working in one or more projects and each one of them requires distinct  set of running services. What usually happens is one of the following:<\/p>\n<ul>\n<li>You install them all and let them run.<\/li>\n<li>You install them all and start and stop them manually when you switch working project.<\/li>\n<\/ul>\n<p>Resources are always few for a developers and some are paranoid about sparing them. With SMF you can:<\/p>\n<ul>\n<li>Define a SMF service for each of your projects.<\/li>\n<li>For every projects, define dependencies with the services you need.<\/li>\n<\/ul>\n<p>This way, at a minimum, you can start and shutdown, <strong>with a single command<\/strong>, every service you need for a specific project. No more:<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<ul>\n<li>Custom shell scripts for every service.<\/li>\n<li>Custom configuration entries for inetd services (such as Subversion, Apache, etc.)<\/li>\n<li>Specific OS customization.<\/li>\n<li>Running services when you don&#8217;t need them and waste resources you could use otherwise.<\/li>\n<\/ul>\n<p>Example of SMF service manifest customization can be found in the following posts:<\/p>\n<ul>\n<li><a href=\"http:\/\/thegreyblog.blogspot.com\/2010\/06\/registering-jira-as-solaris-smf-managed.html\" id=\"i.p4\" title=\"Registering a service with SMF.here.\">Registering a service with SMF.<\/a><\/li>\n<li><a href=\"http:\/\/thegreyblog.blogspot.com\/2010\/06\/credentials-and-projects-for-solaris-10.html\" id=\"zx17\" title=\"Credentials and Projects for a Solaris 10 SMF-Managed Service\">Credentials and Projects for a Solaris 10 SMF-Managed Service<\/a>.<\/li>\n<li><a href=\"http:\/\/thegreyblog.blogspot.com\/2009\/01\/setting-up-subversion-on-solaris-10-as.html\" id=\"t:yl\" title=\"Setting Up Subversion as an inetd Service\">Setting Up Subversion as an inetd Service<\/a>.<\/li>\n<\/ul>\n<h3>ZFS<\/h3>\n<\/div>\n<p>The  ZFS filesystem is unique as far as it concerns flexibility and ease of  use. With an incredibly lean set of commands, you can:<\/p>\n<ul>\n<li>Create file systems on the fly.<\/li>\n<li>Snapshot file systems on the fly.<\/li>\n<li>Clone file system on the fly with almost null space usage overhead.<\/li>\n<\/ul>\n<p>There&#8217;s a huge literature about ZFS and I&#8217;ll limit to describe my favorite use cases.<\/p>\n<h4>Use case: Multiplexing Your Development Environment.<\/h4>\n<p>Software installations are just the beginning of your user experience. Often, we spend time:<\/p>\n<ul>\n<li>Configuring our environments.<\/li>\n<li>Fine-tuning them.<\/li>\n<li>Defining the set of additional libraries we need.<\/li>\n<li>Defining the set of server resources (JDBC, JMS, etc.) our applications use.<\/li>\n<\/ul>\n<p>And so on. The list is endless.<\/p>\n<p>Sometimes  it&#8217;s necessary to prepare different environments for different projects  or different development stages of the same application. Instead of  losing time and resource to build different environments I&#8217;ll usually  proceed as follows:<\/p>\n<ul>\n<li>Install and configure my environment.<\/li>\n<li>Make a ZFS snapshot of it.<\/li>\n<li>Make a ZFS clone of it for every additional setup I need.<\/li>\n<\/ul>\n<p>Oracle  JDeveloper is a good example of an application I often clone.  JDeveloper is fundamentally a single user environment, despite adopting  the common approach of using a per-user configuration directory in the  user&#8217;s home directory. Instead of fiddling with scripts to set per-user  configuration parameters, I just install it once, snapshot it&#8217;s  installation directory and make a ZFS clone, one per environment. I use  several clones of the JDeveloper environment myself, in my user home  directory.<\/p>\n<p>The power of ZFS clones can be used by the Zones  infrastructure, as we&#8217;ll see in the following section, thus enhancing  further its power. Cloning a ZFS filesystem is also advantageous while  dealing with big installations such as disk images of your favorite  virtualization technologies.<\/p>\n<p>Additional posts I wrote about ZFS that could clarify some of its use cases are:<\/p>\n<ul>\n<li><a href=\"http:\/\/thegreyblog.blogspot.com\/2009\/05\/sparing-disk-space-with-zfs-clones.html\" id=\"qzlf\" title=\"Sparing Disk Space With ZFS Clones While Setting Up a Developer Environment\">Sparing Disk Space With ZFS Clones While Setting Up a Developer Environment<\/a>.<\/li>\n<li><a href=\"http:\/\/thegreyblog.blogspot.com\/2009\/09\/sun-xvm-cloning-your-domu.html\" id=\"ayt8\" title=\"Sun xVM: Cloning Your domU\">Sun xVM: Cloning Your domU<\/a>.<\/li>\n<\/ul>\n<h3>Containers and Other Virtualization Technologies<\/h3>\n<p>I  consider Solaris a superior desktop virtualization platform. Once  again, with a couple of commands. you can easily create a  paravirtualized Solaris instance (a Zone). The zones infrastructure is  ZFS-aware and can take advantage of it.<\/p>\n<p>Zones can be configured  with a command line interface to its XML configuration file. Creating a  zone is straightforward and, since they&#8217;re a lightweight technology, you  can create as much zones as you need. If you&#8217;re using ZFS, the process  of cloning a zone is incredibly simple and fast.<\/p>\n<h4>Use Case: Clustering an Application Server<\/h4>\n<p>During the development of your Java EE application you will tipically need an instance of one (or more) of the following:<\/p>\n<ul>\n<li>An application server.<\/li>\n<li>A web server.<\/li>\n<li>A data base;<\/li>\n<li>An user registry.<\/li>\n<\/ul>\n<p>It&#8217;s  also desirable to have them running on isolated environments so that  you can mimic the expected production configuration. With zones it&#8217;s  easy: just create as many zones as you need and each one of them will  behave as a separate Solaris instance: every zone will have, for  example:<\/p>\n<ul>\n<li>Its own network card(s) and IP configuration.<\/li>\n<li>Its own users, groups, roles and security policies.<\/li>\n<li>Its own services.<\/li>\n<\/ul>\n<p>Instead  of installing and configuring an environment multiple times, you will  prepare &#8220;master&#8221; zones with the services you need. I&#8217;ve got a &#8220;master&#8221;  zone for every one of the following:<\/p>\n<ul>\n<li>WebSphere Application Server.<\/li>\n<li>WebLogic Application Server.<\/li>\n<li>Oracle DB.<\/li>\n<li>MySQL DB.<\/li>\n<li>LDAP directory.<\/li>\n<\/ul>\n<p>and so forth. With one simple command (<span style=\"font-family: 'courier new'\">zoneadm clone [-m copy] [-s zfs_snapshot] source_zone<\/span>) you&#8217;ll end up with a brand new working environment in a question of minutes.<\/p>\n<h4>Use Case: VirtualBox and ZFS<\/h4>\n<p>Sometimes  you&#8217;ll rather work on a virtualized instance of some other OS, such as  GNU\/Linux, FreeBSD and Windows. Solaris is a great VirtualBox host and  the power of ZFS will let you:<\/p>\n<ul>\n<li>Create &#8220;master&#8221; images for every OS or every &#8220;OS role&#8221; you need.<\/li>\n<li>Clone them on the fly to create a brand new virtual OS image.<\/li>\n<\/ul>\n<p>In my case, I&#8217;ve got:<\/p>\n<ul>\n<li>A master Windows 7 client with Visual Studio for .NET development.<\/li>\n<li>A master Windows Server 2008.<\/li>\n<li>A master Windows Server 2008 (a clone of the previous one) with SQL Server 2008.<\/li>\n<li>A master Debian GNU\/Linux.<\/li>\n<\/ul>\n<p>Every  time I need a new instance I just have to clone the disk image. In a  matter of seconds I&#8217;ve got the environment I need. Not only I&#8217;m sparing  precious time, I&#8217;m also sparing a vast amount of disk space. Should I  store all of the images (and zones) I use without the ZFS technology and  I&#8217;d need at least 4 times as much disks as I&#8217;ve got.<\/p>\n<h4>Use Case: A Virtualized Network Stack<\/h4>\n<p>Solaris  provides you pretty powerful network virtualization capabilities. You  can, for example, create as many virtual NICs as you need and use them  independently either in Solaris Zones or as network cards for other  virtualization technologies (such as VirtualBox.) Network cards can be  interconnected with virtual switch (etherstubs) and enable you to create  &#8220;networks in a box.&#8221; Not only you can use virtualized instances to  mimic your production environment: you&#8217;ll be able to create a  virtualized network to emulate the complex network policies your  environment could need.<\/p>\n<p>If you need to test an environment whose  configuration would be impossible to replicate without additional  physical machines, that&#8217;s where virtualization technologies (such as  Zones or VirtualBox) and the virtualized network stack come in handy. My  developer environment for a project I&#8217;m working for is made up of:<\/p>\n<ul>\n<li>Two zones with two load balanced IBM IHS instances.<\/li>\n<li>A zone with an LDAP directory.<\/li>\n<li>Two zones with two clustered instances of IBM WebSphere Application Server.<\/li>\n<li>A Zone with an instance of IBM WebSphere DMGR.<\/li>\n<\/ul>\n<p>With  Solaris, I can replicate the production environment in my box and  respect each and every network configuration we use. Without these  technologies, it would have been much harder to accomplish this goal or I  would end up with custom configurations (for example, to avoid port  clashes). In all cases, I&#8217;d lose much more time on the administration  and configuration of such environments if zones weren&#8217;t so easy to use.<\/p>\n<h3>DTrace<\/h3>\n<p>DTrace  power is extremely easy to explain to a developer. At the same time,  it&#8217;s difficult to grasp its usefulness without trying it yourself.  DTrace on Solaris provides tens of thousand of probes out of the box and  others can be created on the fly. This &#8220;probes&#8221; provide you an  extremely powerful mean of troubleshoot problems in either your  applications and the underlying operating systems. To use the probes  you&#8217;ve got to use scripts written in the D language. Fortunately, this  language is pretty easy by design and you can write powerful D scripts  in a few lines of code.<\/p>\n<p>DTrace is unobtrusive and let you  troubleshoot problems immediately, without modifying your application,  even in a production environment. Some IDEs, such as NetBeans, have  powerful plugins that let you write D scripts and see the data collected  by the probes in beautiful graphics.<\/p>\n<p>As a developer, I valued  DTrace usefulness more than once. Instead of troubleshooting problems  having to dig into the source code and introduce additional code (even  in the cases in which aspects come in handy), I could use a D script to  observe the application from the outside and quickly collect data that  could help me determine where the problem could be.<\/p>\n<p>In some  cases, moreover, you could find yourself dealing with situations in  which there&#8217;s no code available. I could quickly troubleshoot a problem I  was having with WebSphere Application Server with a D script instead of  relying on WebSphere tracing facilities and the task of interpreting  log files.<\/p>\n<h2>Conclusion<\/h2>\n<p>So much for an introductory post.  The possibility of building a development environment as close as  possible as your target environment is a &#8220;must&#8221; for any development  platform. Additionally, I consider that working on a environment as  close as possible as the production environment not only gives you  additional value and insights during an application development stage,  but should also considered a mandatory requirement for every project  we&#8217;re involved into. Solaris provides all of the tools a developer need  to accomplish this goal.<\/p>\n<p>Solaris is a complex enterprise  operating system with many features you won&#8217;t probably ever use.  Nevertheless, there&#8217;s a use case for many others of them, as I tried to  point out in this post. Since some of these technologies were developed  with an open source license, they are also available on other operating  systems: ZFS is available on FreeBSD and there exist a community effort  to port it to OS X; DTrace is available on OS X, Linux and FreeBSD.<\/p>\n<p>The  &#8220;Solaris advantage&#8221; is that all of these technologies are highly  integrated and take advantage of each other. The result is worth more  than the sum of them. These technologies have got a very polished and  easy to use administrative interfaces: when time is important, &#8220;How you  do it&#8221; is fundamental.<\/p>\n<p>I hope that these insights might help you  understand if and when the Solaris operating system might be useful to  you. Even if you consider that it&#8217;s not, I suggest you give it a try  anyway: it&#8217;s always good to add new technologies to your tool box.<\/p>\n<p><strong><i>Reference: <\/i><\/strong><a href=\"http:\/\/thegreyblog.blogspot.com\/2010\/10\/some-reasons-why-solaris-is-great-java.html\">Some Reasons Why Solaris Is a Great Java Development Platform<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/p\/jcg.html\">JCG partner<\/a> at <a href=\"http:\/\/thegreyblog.blogspot.com\/\">The Grey Blog<\/a>.<\/p>\n<div style=\"margin: 0px\"><strong><i>Related Articles :<\/i><\/strong><\/div>\n<ul>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/?tag=java-best-practices\">Java Best Practices<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2010\/06\/install-android-os-on-pc-with.html\">Install Android OS on your PC with VirtualBox<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/02\/java-memory-model-quick-overview-and.html\">Java Memory Model &#8211; Quick overview and things to notice<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/04\/java-7-mac-os-x-status.html\">Official Java 7 for Mac OS X \u2013 Status<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2010\/05\/java-beginners-guide.html\">Java beginners Guide<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Some days ago I posted &#8220;The Death of OpenSolaris: Choosing an OS for a Java Developer&#8221; in which I stated that Solaris is a great platform for a Java developer. The point of that post was simply wondering about which Solaris version I&#8217;d use since the demise of OpenSolaris. What the post did fail in &hellip;<\/p>\n","protected":false},"author":33,"featured_media":208,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[186],"class_list":["post-418","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-core-java","tag-oracle-solaris"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Reasons Why Solaris Is a Great Java Development Platform - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Some days ago I posted &quot;The Death of OpenSolaris: Choosing an OS for a Java Developer&quot; in which I stated that Solaris is a great platform for a Java\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Reasons Why Solaris Is a Great Java Development Platform - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Some days ago I posted &quot;The Death of OpenSolaris: Choosing an OS for a Java Developer&quot; in which I stated that Solaris is a great platform for a Java\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2011-05-09T21:35:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-10-21T19:45:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/oracle-solaris-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Enrico Crisostomo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Enrico Crisostomo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/solaris-java-development-platform.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/solaris-java-development-platform.html\"},\"author\":{\"name\":\"Enrico Crisostomo\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/cec28099825885634aaa9560f8c3f1dc\"},\"headline\":\"Reasons Why Solaris Is a Great Java Development Platform\",\"datePublished\":\"2011-05-09T21:35:00+00:00\",\"dateModified\":\"2012-10-21T19:45:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/solaris-java-development-platform.html\"},\"wordCount\":2441,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/solaris-java-development-platform.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/oracle-solaris-logo.jpg\",\"keywords\":[\"Oracle Solaris\"],\"articleSection\":[\"Core Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/solaris-java-development-platform.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/solaris-java-development-platform.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/solaris-java-development-platform.html\",\"name\":\"Reasons Why Solaris Is a Great Java Development Platform - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/solaris-java-development-platform.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/solaris-java-development-platform.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/oracle-solaris-logo.jpg\",\"datePublished\":\"2011-05-09T21:35:00+00:00\",\"dateModified\":\"2012-10-21T19:45:35+00:00\",\"description\":\"Some days ago I posted \\\"The Death of OpenSolaris: Choosing an OS for a Java Developer\\\" in which I stated that Solaris is a great platform for a Java\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/solaris-java-development-platform.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/solaris-java-development-platform.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/solaris-java-development-platform.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/oracle-solaris-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/oracle-solaris-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/solaris-java-development-platform.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Core Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/core-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Reasons Why Solaris Is a Great Java Development Platform\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/cec28099825885634aaa9560f8c3f1dc\",\"name\":\"Enrico Crisostomo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1409f69f72e12da95325275f8deb51ba603e158b4464ca3565c814454ee92e5d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1409f69f72e12da95325275f8deb51ba603e158b4464ca3565c814454ee92e5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1409f69f72e12da95325275f8deb51ba603e158b4464ca3565c814454ee92e5d?s=96&d=mm&r=g\",\"caption\":\"Enrico Crisostomo\"},\"sameAs\":[\"http:\\\/\\\/thegreyblog.blogspot.com\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/Enrico-Crisostomo\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Reasons Why Solaris Is a Great Java Development Platform - Java Code Geeks","description":"Some days ago I posted \"The Death of OpenSolaris: Choosing an OS for a Java Developer\" in which I stated that Solaris is a great platform for a Java","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html","og_locale":"en_US","og_type":"article","og_title":"Reasons Why Solaris Is a Great Java Development Platform - Java Code Geeks","og_description":"Some days ago I posted \"The Death of OpenSolaris: Choosing an OS for a Java Developer\" in which I stated that Solaris is a great platform for a Java","og_url":"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2011-05-09T21:35:00+00:00","article_modified_time":"2012-10-21T19:45:35+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/oracle-solaris-logo.jpg","type":"image\/jpeg"}],"author":"Enrico Crisostomo","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Enrico Crisostomo","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html"},"author":{"name":"Enrico Crisostomo","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/cec28099825885634aaa9560f8c3f1dc"},"headline":"Reasons Why Solaris Is a Great Java Development Platform","datePublished":"2011-05-09T21:35:00+00:00","dateModified":"2012-10-21T19:45:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html"},"wordCount":2441,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/oracle-solaris-logo.jpg","keywords":["Oracle Solaris"],"articleSection":["Core Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html","url":"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html","name":"Reasons Why Solaris Is a Great Java Development Platform - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/oracle-solaris-logo.jpg","datePublished":"2011-05-09T21:35:00+00:00","dateModified":"2012-10-21T19:45:35+00:00","description":"Some days ago I posted \"The Death of OpenSolaris: Choosing an OS for a Java Developer\" in which I stated that Solaris is a great platform for a Java","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/oracle-solaris-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/oracle-solaris-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/solaris-java-development-platform.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Core Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/core-java"},{"@type":"ListItem","position":4,"name":"Reasons Why Solaris Is a Great Java Development Platform"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/cec28099825885634aaa9560f8c3f1dc","name":"Enrico Crisostomo","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/1409f69f72e12da95325275f8deb51ba603e158b4464ca3565c814454ee92e5d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1409f69f72e12da95325275f8deb51ba603e158b4464ca3565c814454ee92e5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1409f69f72e12da95325275f8deb51ba603e158b4464ca3565c814454ee92e5d?s=96&d=mm&r=g","caption":"Enrico Crisostomo"},"sameAs":["http:\/\/thegreyblog.blogspot.com\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/Enrico-Crisostomo"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/418","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/33"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=418"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/418\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/208"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=418"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}