7/15/2014

Tomcat randomly shuts down without any log or trace - possible solution

Apache Tomcat server shut down

The problem

I ran into a problem couple weeks ago with my Tomcat. I deployed my webapp and it's been up and running for some time and one day it suddenly crashed. My customer reported that the application is not working, and he gets Service unavailable error from Apache.

I started browsing log files: system logs, Apache logs, Tomcat logs, my own application logs, I read everything, and there was no trace of any error, all I could find were these lines:

maj 19, 2014 9:57:50 PM org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-9080
maj 19, 2014 9:57:51 PM org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina

Nothing unusual, it looked like Tomcat was just being properly shut down, just like that. You may guess, that it wasn't me who did this :) After some googling, I found nothing more than "maybe you have System.exit() somewhere in your code?". Damn, no, I don't.

The culprit

A friend of mine looked it all up for me, and he agreed that nothing unusual happens except that Tomcat's process is being normally shut down. We started analyzing bash scripts I used for starting up the server (they're simplified for educational purposes):

The last line was the problem.

The solution

I used to log in to my VPS with PuTTY and execute my scripts, it usually worked fine. But from time to time it happened that after deploying the webapp, I didn't kill my script after it did his job. tail -f shows the logs continuously so the script doesn't finish it's execution automatically. When the ssh connection timed out while my script was still running, shell killed it WITH IT'S CHILD PROCESSES - a Tomcat server among others and that was the whole problem. Simple solution - DO NOT use tail -f in your bash scripts, or at least be aware of it and make sure you kill the script before closing the ssh connection.

7/06/2014

"Could not load the following font" solved: Jasper Reports + Grails adventures

Jasper + Grails/Java


Recently, I've been struggling with making this couple work together. JasperReports might be very useful when it comes to rendering reports out of your data, it can read your database and transform it into tables and charts. It sounds very nice in theory, but when your client wants to not only see the data itself, but also he wants to see it looking good then you're in trouble. Mine did, and I had some hard time setting it all up.

At the time I was working on it, there was a Jasper plugin for Grails version 1.6 which used some ancient version of JasperReports library and hence it was not compatible with my report I created in JasperSoft Studio 5.5.0. I had to build 1.7-SNAPSHOT version of the plugin to fix this. Luckily, couple days later plugin got updated, and I could use the officially released one (currently, version 1.8 is out).

The battle rages on

Nevertheless, even though I had it all theoretically compatible, I still couldn't render any of my reports. The problem now were... the fonts. My client wanted the reports to look nice, there were designs for it and they even wanted it to be printable as an advertising materials. It meant that reports should share look-and-feel with the corresponding website, including graphics and fonts. And this is where the real battle begun...

Font not found, font not available

My website, and my reports created in JasperSoft Studio have been using Ubuntu font family and it all worked fine there, but when trying to render the same report through Grails web application, it said that:

net.sf.jasperreports.engine.util.JRFontNotFoundException:
Font 'Ubuntu'is not available to the JVM.
See the Javadoc for more details.


First I tried to add the font to my JVM in very brutal low-level way - by adding to JavaHome/lib/fontconfig.properties but it didn't help much. After a while of stack-overflowing I found that I have to create a special .jar file with definition of my fonts for the reports, and that easiest way to do it is using iReports, so I did. It helped a little because now I was able to render my reports in all the other file formats, however only .pptx were actually usable, the rest didn't look as I expected. Pdfs though still didn't cooperate but the error message now has changed a bit.

Could not load the following font

I stuck with new error message like this:

Class 
    net.sf.jasperreports.engine.JRRuntimeException 
Message 
    Could not load the following font : pdfFontName : Ubuntu pdfEncoding : UTF-8 isPdfEmbedded : false

I couldn't explain it because the same report was being rendered fine in iReports and JasperSoft Studio, and also it worked fine in Grails when rendered to .pptx format, but not the bloody PDF. After some time of debugging guts of jasper's rendering engine and changing random things in order to find any clue, I started to wonder where does it get the pdfEncoding : UTF-8 property from and that was a milestone. It turned out that jasper uses three system properties:

net.sf.jasperreports.default.pdf.font.name
net.sf.jasperreports.default.pdf.encoding
net.sf.jasperreports.default.pdf.embedded

I started digging through JasperSoft Studio's options and I found that it sets some values to them, and that was a silver bullet.

Helvetica to the rescue

I don't know why, but this default.pdf.font.name by default was set to Helvetica. Even though I don't have a font like this anywhere in my OS (Windows 8), neither do I have it anywhere on my VPS (Ubuntu), it made the whole thing work.

These four lines of code placed in my BootStrap.groovy worked like a charm and now I was finally happy to see my reports in a pdf file.


7/04/2014

Java trends - Top 100 biggest poms in June 2014

Heavy loaded java duke cartoon.

We reviewed pom files of 17590 projects to find the beast, project with the heaviest pom.xml file. Interested in full ranking - contact us
  1. 292 KB Grandparent POM for Apache Lucene Core and Apache Solr Grandparent POM for Apache Lucene Core and Apache Solr
  2. 143 KB Fabric8
  3. 106 KB ApSeMedicalServicesAdapterIC-Schemas
  4. 98 KB liveSense :: Features :: Karaf Features liveSense features
  5. 93 KB ModeShape Parent ModeShape is a JCR repository implementation with support for federation and sequencing.
  6. 83 KB byteman-agent The Byteman agent jar contains the implementation of the Byteman java agent, including the bytecode transformer, rule parser, type checker and execution engine and the agent listener.
  7. 79 KB nazgul-tools-parent Nazgul Framework: nazgul-tools-parent
  8. 76 KB HBase Apache HBase™ is the Hadoop database. Use it when you need random, realtime read/write access to your Big Data. This project's goal is the hosting of very large tables -- billions of rows X millions of columns -- atop clusters of commodity hardware.
  9. 75 KB parent Parent POM.xml with most oftenly used pre-configured features
  10. 72 KB Apache Isis Core Core framework, providing metamodel, runtime and core APIs. Also defines standard build process, as well as standard set of 3rd party dependencies (eg for testing and logging frameworks).
  11. 70 KB Pom dependency management Dependencies version for the entire Osgiliath submodules
  12. 67 KB Mavenpom Ancestor of all projects of Code Lutin
  13. 64 KB Titan: Distributed Graph Database Titan is a distributed graph database optimized for processing massive-scale graphs represented over a machine cluster. Titan separates the concerns of graph processing and manipulation from storing the graph on disk, delegating that concern to an extensible set of persistence solutions.
  14. 63 KB Continuum :: Project
  15. 61 KB uPortal Parent The root project definition for the uPortal project.
  16. 61 KB jersey Jersey is the open source (under dual CDDL+GPL license) JAX-RS 2.0 (JSR 339) production quality Reference Implementation for building RESTful Web services.
  17. 59 KB Apache Stanbol Parent Parent POM for the Apache Stanbol project
  18. 59 KB ActiveMQ :: Unit Tests The ActiveMQ Message Broker and Client Unit Tests
  19. 58 KB SSP Platform Parent The root project definition for the SSP Platform project.
  20. 58 KB liveSense (Parent) The parent project for liveSense
  21. 58 KB Sakai Master Corporate POM for the Sakai Open Source Collaborative Learning Environment/Learning Management System
  22. 58 KB airbase Base POM for Airlift
  23. 57 KB OpenJPA Persistence JDBC OpenJPA Persistence JDBC
  24. 57 KB ActiveMQ
  25. 57 KB Apache DeltaSpike Code Parent Apache DeltaSpike Parent for container projects
  26. 52 KB Apache Stratos - Profile Generation
  27. 52 KB OpenJPA Parent POM Apache OpenJPA implementation of JSR-317 JPA 2.0
  28. 49 KB XWiki Commons - Parent POM A collaborative development platform runtime based on the wiki paradigm
  29. 49 KB BroadleafCommerce BroadleafCommerce Top Level Project
  30. 49 KB Fedora Commons 4 Parent project for Fedora Commons 4
  31. 48 KB SonarQube Open source platform for continuous inspection of code quality
  32. 48 KB Hibernate OGM Aggregator Hibernate OGM Aggregator POM
  33. 48 KB PatternTesting Parent PatternTesting-Parent is the parent of the PatternTesting family. The goal of PatternTesting is to verify Architecture/Design recommendations and to write better code more easily. It uses AOP and AspectJ to perform this feat.
  34. 47 KB elasticsearch Elasticsearch - Open Source, Distributed, RESTful Search Engine
  35. 47 KB Errai Errai is a GWT-based framework for building rich web applications using next-generation web technologies.
  36. 46 KB Pom plugins Plugins behaviour for the entire Osgiliath submodules
  37. 45 KB Minium - Parent
  38. 45 KB Hudson Hudson Continuous Integration Server
  39. 43 KB Spring IO Platform bill of materials Spring IO Platform bill of materials
  40. 41 KB Spring Boot Dependencies Spring Boot Dependencies
  41. 41 KB SciJava Projects SciJava aims to provide an overview of available Java libraries for scientific computing. This POM provides a parent from which participating projects can declare their build configurations. It ensures that projects all use a compatible build environment, including Java version, as well as versions of dependencies and plugins. Projects wishing to use pom-scijava as a parent project need to override the , , , , , and the sections.
  42. 41 KB DSpace Parent Project
  43. 41 KB Apache Log4j 2 Apache Log4j 2
  44. 41 KB Modules Subsystem Generic Modules subsystem
  45. 41 KB GW-Systems Maven Parent Parent POM for GW-Systems projects. Provides default project build configuration.
  46. 40 KB Netty Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers and clients.
  47. 39 KB Appverse Web Framework Master POM Appverse Web Framework Master POM
  48. 38 KB Apache Flume
  49. 38 KB OpenJPA Persistence Locking Tests OpenJPA Persistence Locking Tests
  50. 37 KB Apache jclouds Project Apache jclouds: Concurrent API for Cloud Services
  51. 37 KB Hazelcast Root Hazelcast In-Memory DataGrid
  52. 37 KB KIE Workbench - Webapp KIE Workbench - Webapp
  53. 37 KB Apache Fediz
  54. 36 KB Apache DeltaSpike Parent Apache DeltaSpike Parent
  55. 36 KB Hive
  56. 36 KB Neo4j Server Standalone Neo4j server application.
  57. 36 KB hawtio-web hawtio :: hawtio-web
  58. 35 KB com.brienwheeler webkit Toolkit for helping build robust, monitorable web apps with single JAR packaging, graceful shutdown, Graphite integration, and more
  59. 35 KB HtmlUnit A headless browser intended for use in testing web-based applications.
  60. 35 KB Library POM Library POM
  61. 35 KB Weld Parent The parent POM for Weld, specifying the build parameters
  62. 34 KB Airavata
  63. 34 KB Fabric8 :: Binary Distribution
  64. 34 KB DKPro Core ASL DKPro Core is a collection of software components for natural language processing (NLP) based on the Apache UIMA framework.
  65. 33 KB Drools BOM (Bill Of Materials) Import this BOM in your dependencyManagement if you want to depend on multiple Drools artifacts.
  66. 33 KB Cucumber-JVM
  67. 33 KB uPortal WAR The uPortal web application.
  68. 32 KB ModeShape BOM for embedded usage Bill of Material (BOM) for embedding ModeShape within JavaSE apps, libraries, and (non-AS) web apps
  69. 32 KB SSP Platform WAR The SSP Platform web application.
  70. 32 KB netbout-web
  71. 32 KB Apache OpenWebBeans Apache OpenWebBeans is an open source implementation of JSR-299 WebBeans
  72. 31 KB Dependency-Check Core
  73. 31 KB Jetty :: Distribution Assemblies
  74. 31 KB Hudson :: Core Contains the core Hudson code and view files to render HTML.
  75. 31 KB Apache Hadoop Project POM Apache Hadoop Project POM
  76. 31 KB OPS4J Pax Exam (Build POM) Pax Exam Integration testing framework for Modern Java Platforms.
  77. 31 KB GroupDocs Java Viewer GroupDocs.Viewer is an online document viewer that lets you read documents in your browser, regardless of whether you have the software that they were created in. You can view many types to word processing documents (DOC, DOCX, TXT, RTF, ODT), presentations (PPT, PPTX), spreadsheets (XLS, XLSX), portable files (PDF), and image files (JPG, BMP, GIF, TIFF). For each file, you get a high-fidelity rendering, showing the document just as it would if you opened it in the software it was created in. Layout and formatting is retained and you see an exact copy of the original. GroupDocs.Viewer lets you really read the document. You can search text documents, copy text and even embed the document – GroupDocs.Viewer and all - in a web page. You can print or download the file from GroupDocs.Viewer if you need to work with it offline.
  78. 30 KB CRaSH parent The CRaSH is a shell for Java Content Repository that comes bundled as a war file to deploy in eXo Portal 2.5 or GateIn
  79. 30 KB SSP
  80. 30 KB GroupDocs Java Annotation GroupDocs.Annotation lets you add notes to PDF and Word documents, as well as to image files – all directly from a web browser. It is a convenient web-based tool that doesn’t require any software installation and allows you and your colleagues to annotate documents online. Moreover, with GroupDocs.Annotation, you can add your notes to a document and then send it for approval or review, or share the document with others for online collaborative review in real-time. This way you get feedback faster and can keep everyone’s notes and comments in a single file.
  81. 30 KB GroupDocs Java Annotation GroupDocs.Annotation lets you add notes to PDF and Word documents, as well as to image files – all directly from a web browser. It is a convenient web-based tool that doesn’t require any software installation and allows you and your colleagues to annotate documents online. Moreover, with GroupDocs.Annotation, you can add your notes to a document and then send it for approval or review, or share the document with others for online collaborative review in real-time. This way you get feedback faster and can keep everyone’s notes and comments in a single file.
  82. 30 KB Jetty :: Project
  83. 29 KB OpenEJB :: JavaEE Full API (zip and jar files)
  84. 29 KB WicketStuff Core Parent WicketStuff Core Parent is the parent project for all of the core WicketStuff projects. It tries to unify the WS projects into a common structure that shares a common build / release cycle. This will hopefully keep WicketStuff projects more in sync with Wicket and make it easier on new users.
  85. 29 KB CRaSH Parent The CRaSH is a shell for Java Content Repository that comes bundled as a war file to deploy in eXo Portal 2.5 or GateIn
  86. 29 KB JRuby Core
  87. 29 KB Mozilla Rhino Rhino is an open-source implementation of JavaScript written entirely in Java. It is typically embedded into Java applications to provide scripting to end users.
  88. 29 KB Apache Crunch Apache Crunch is a Java library for writing, testing, and running Hadoop MapReduce pipelines, based on Google's FlumeJava. Its goal is to make pipelines that are composed of many user-defined functions simple to write, easy to test, and efficient to run.
  89. 28 KB Apache Stratos - Distribution Apache Stratos Manager Distribution
  90. 28 KB KIE Drools Workbench - Webapp KIE Drools Workbench - Webapp
  91. 28 KB Weld Examples Examples for Weld, the reference implementation of JSR 299: Contexts and Dependency Injection for Java EE
  92. 28 KB KIE (Drools, jBPM, OptaPlanner) parent metadata The metadata parent contains all parent metadata (including plugins) except for dependency versions. This is to avoid a chicken-and-egg problem with the boms.
  93. 28 KB camunda BPM - Parent Pom This pom is the parent of all camunda BPM platform projects
  94. 28 KB Storm Distributed and fault-tolerant realtime computation
  95. 28 KB The Netty Project The Netty project is an effort to provide an asynchronous event-driven network application framework and tools for rapid development of maintainable high performance and high scalability protocol servers and clients. In other words, Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server.
  96. 27 KB Drools Workbench - WebApp Drools Workbench - WebApp
  97. 27 KB liveSense :: Assemblies
  98. 27 KB jBPM Console NG - Showcase jBPM Console NG - Showcase
  99. 27 KB Wicket Parent Wicket is a Java-based open source component web application framework.
  100. 27 KB Continuum :: Web APP

Java trends - top 50 most creative developer in June 2014

Java Duke with spheres.
We reviewed authors of 17590 Java projects to find out who contribute to the biggest variety of open source projects. We present also randomly picked three contributions made by each developer. Congratulations! Interested in full ranking - contact us
  1. Sergi Lanau Rodríguez
  2. Roger Bofarull
  3. Carlos Rubio Manero
  4. Miguel Fernández
  5. io7m
  6. Yegor Bugayenko
  7. Alessandro Crugnola
  8. Michael Musgrove
  9. Romain Deltour
    • DAISY Pipeline 2 :: Modules Parent POM The DAISY Pipeline 2 modules provide scripts for automated processing of various digital formats efficiently and economically. It intends to facilitate the production and maintenance of accessible content for people with print disabilities.
    • XSpec Maven Plugin A Maven plugin to run XSpec tests for XSLT.
    • EpubCheck :: Validation Tool for EPUB EpubCheck is a tool to validate IDPF EPUB files. It can detect many types of errors in EPUB. OCF container structure, OPF and OPS mark-up, and internal reference consistency are checked. EpubCheck can be run as a standalone command-line tool, installed as a Java server-side web application or used as a Java library.
  10. Philip Schiffer
    • LicensesDialog LicensesDialog is an open source library to display licenses used by third-party libraries in an Android app.
    • Async Otto Extension to Squares Otto library to provide a Bus which always posts to the main thread.
    • FormValidations FormValidations is an open source library to validate forms in Android apps.
  11. Amos Feng
  12. Thomas Jenkinson
  13. ZK Team
  14. Bert Frees
    • DAISY Pipeline 2 :: Modules Parent POM The DAISY Pipeline 2 modules provide scripts for automated processing of various digital formats efficiently and economically. It intends to facilitate the production and maintenance of accessible content for people with print disabilities.
    • DAISY Pipeline 2 :: Framework Parent POM The DAISY Pipeline 2 is an open source framework for the automated processing of various digital formats efficiently and economically. It intends to facilitate the production and maintenance of accessible content for people with print disabilities.
    • liblouis-nar liblouis packaged in a NAR (Native ARchive).
  15. Francois Fouquet
  16. Matt Gormley
  17. DongYun Kang
  18. Jozef Hartinger
    • Weld Examples Examples for Weld, the reference implementation of CDI
    • CDI TCK
    • Weld APIs Parent APIs for Weld, the reference implementation of Contexts and Dependency Injection for Java EE
  19. John Casey
  20. Philip Helger
    • phloc-webscopes Library for handling scopes in web applications
    • webservice-client Utility library that provides support for sending eInvoices to the Austrian Government (ER>B) by using the Webservice interface
    • jcodemodel Java code generation library
  21. Thomas Rudin
  22. Peter Abeles
    • BoofCV BoofCV is an open source Java library for real-time computer vision and robotics applications.
    • BoofCV BoofCV is an open source Java library for real-time computer vision and robotics applications.
    • BoofCV BoofCV is an open source Java library for real-time computer vision and robotics applications.
  23. Sławek Piotrowski
    • Moonshine BOM Moonshine Bill of Materials POM
    • ClassIndex ClassIndex is an annotation processor which at compile-time generates an index of classes implementing given interface, classes annotated by given annotation or placed in a common package.
    • Atteo Filtering
  24. Jon Brisbin
  25. Stefan Miklosovic
  26. DSpace @ Lyncode
  27. Emmanuel Bernard
  28. Konstantin Pelykh
  29. Justin Patterson
  30. Xiaoke Zhang
  31. KwonNam Son
  32. Hovan Yoo
  33. Harald Wellmann
  34. LiaoKai
    • UndoBar UndoBar Pattern implementation for android 2.x +
    • debug My android development framework, under heavy development. Short code, rapid development, less bug, more fun
    • views Accessory
  35. Curtis Rueden
    • Native ARchive plugin for Maven This plugin compiles native code and publishes native artifacts in the form of nar files.
    • SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by both ImageJ and SCIFIO.
    • ImageJ Launcher The executable which runs ImageJ. Its purpose is also to make sure that updates downloaded by the ImageJ Updater will be put into place before starting the Java Virtual Machine. It was formerly known as the Fiji launcher.
  36. Trejkaz
    • Hex Interpreter API API for interpreting runs of binary as values humans can understand
    • Examples Examples
    • Gum Gum - A thin wrapper around Apple's Mac-specific Java libraries to allow code to compile on other platforms without redistributing Apple's jar.
  37. Michael Haitz
  38. Lennart Jörelid
    • nazgul-tools-reactor The Nazgul Framework: Tools project holds a collection of Maven best-pracises and sensible configurations, aimed at boosting productivity. The Nazgul Framework: Tools project enables you to start projects quickly and scale them considerably without needing to change the development or deployment model.
    • nazgul-codestyle Nazgul Framework: Tools codestyle definitions, including development model, enforcement rules and configurations for code-checking plugins such as PMD, CPD and checkstyle.
    • nazgul-tools-parent Nazgul Framework: nazgul-tools-parent
  39. Pete Muir
  40. Andrew Dinn
    • byteman-root Byteman is a java agent-based bytecode injection tool. It can be used to inject Event Condition Action rules into Java application and JVM runtime methods. Its primary purpose is to support execution tracing and fault injection testing.
    • Narayana: all narayana-all
    • narayana-all narayana-all
  41. Erwan Daubert
  42. Travis Wolfe
  43. Jochen Schalanda
  44. Roland Huss
  45. Florian Bachmann
    • a Java API for Kml This is JavaAPIforKMml, Micromata's library for use with applications that want to parse, generate and operate on KML. It is an implementation of the OGC KML 2.2 standard. It is written entirely in Java and makes heavy use of JAXB.
    • a Java API for Kml This is JavaAPIforKMml, Micromata's library for use with applications that want to parse, generate and operate on KML. It is an implementation of the OGC KML 2.2 standard. It is written entirely in Java and makes heavy use of JAXB.
  46. Bradley Smith, LLC
  47. Emir Hasanbegovic
  48. Emmanuelle Raffenne
    • deep commons stratio deep common utility classes
    • deep core Project containing the actual implementation of the RDD integrating Apache Spark and Apache Cassandra
    • deep parent Stratio deep parent project
  49. Lovro Pandžić
    • JUnit-BDD Provides a simple and fluent API for structuring test code within when and then blocks used in Behavior-driven development
    • Jackson-module-parameter-names Add-on module for Jackson (http://jackson.codehaus.org) to support introspection of method/constructor parameter names, without having to add explicit property name annotation.
  50. Stephen Samuel

Java trends - top 100 mostly used libraries in June 2014

Java Duke X-ray

We reviewed dependencies of 17590 Java projects to see which libraries are the most popular. See full ranking below.
  1. JUnit⇑ 4913 - JUnit is a regression testing framework written by Erich Gamma and Kent Beck. It is used by the developer who implements unit tests in Java.
  2. SLF4J API Module⇑ 2564 - The slf4j API
  3. Scala Library⇑ 2263 - Standard library for the Scala Programming Language
  4. Mockito⇑ 1152 - Mock objects library for java
  5. Guava: Google Core Libraries for Java⇑ 1072 - Guava is a suite of core and expanded libraries that include utility classes, google's collections, io classes, and much much more. Guava has only one code dependency - javax.annotation, per the JSR-305 spec.
  6. Commons IO⇑ 1043 - The Commons IO library contains utility classes, stream implementations, file filters, file comparators, endian transformation classes, and much more.
  7. Apache Log4j⇑ 973 - Apache Log4j 1.2
  8. Logback Classic Module⇑ 972 - logback-classic module
  9. SLF4J LOG4J-12 Binding⇑ 928 - SLF4J LOG4J-12 Binding
  10. JavaServlet(TM) Specification⇑ 827
  11. scalatest⇑ 677 - scalatest
  12. SLF4J Simple Binding⇑ 649 - SLF4J Simple binding
  13. jackson-databind⇑ 564 - General data-binding functionality for Jackson: works on core streaming API
  14. Commons Lang⇑ 554 - Commons Lang, a package of Java utility classes for the classes that are in java.lang's hierarchy, or are considered to be so standard as to justify existence in java.lang.
  15. TestNG⇑ 551 - TestNG is a testing framework.
  16. H2 Database Engine⇑ 527 - H2 Database Engine
  17. osgi.core⇑ 521 - OSGi Service Platform Release 4 Version 4.3, Core Interfaces and Classes for use in compiling bundles.
  18. Java Servlet API⇑ 520
  19. Commons Logging⇑ 479 - Commons Logging is a thin adapter allowing configurable bridging to other, well known logging systems.
  20. Apache Commons Codec⇑ 472 - The Apache Commons Codec package contains simple encoder and decoders for various formats such as Base64 and Hexadecimal. In addition to these widely used encoders and decoders, the codec package also maintains a collection of phonetic encoding utilities.
  21. Mockito⇑ 469 - Mock objects library for java
  22. JCL 1.1.1 implemented over SLF4J⇑ 466 - JCL 1.1.1 implemented over SLF4J
  23. Apache HttpClient⇑ 463 - HttpComponents Client
  24. Apache Commons Lang⇑ 457 - Apache Commons Lang, a package of Java utility classes for the classes that are in java.lang's hierarchy, or are considered to be so standard as to justify existence in java.lang.
  25. Spring Context⇑ 442 - Spring Context
  26. Joda-Time⇑ 432 - Date and time library to replace JDK date handling
  27. scalatest⇑ 424 - scalatest
  28. Spring Core⇑ 411 - Spring Core
  29. Jackson-core⇑ 396 - Core Jackson abstractions, basic JSON streaming API implementation
  30. Maven Plugin API⇑ 311 - The API for plugins - Mojos - development.
  31. CDI APIs⇑ 307 - APIs for CDI (Contexts and Dependency Injection for Java EE)
  32. Bean Validation API⇑ 305 - Bean Validation API
  33. osgi.cmpn⇑ 301 - OSGi Compendium Release 5, Interfaces and Classes for use in compiling bundles.
  34. Spock Framework - Core Module⇑ 300 - Spock is a testing and specification framework for Java and Groovy applications. What makes it stand out from the crowd is its beautiful and highly expressive specification language. Thanks to its JUnit runner, Spock is compatible with most IDEs, build tools, and continuous integration servers. Spock is inspired from JUnit, jMock, RSpec, Groovy, Scala, Vulcans, and other fascinating life forms.
  35. Spring TestContext Framework⇑ 295 - Spring TestContext Framework
  36. Spring Web⇑ 282 - Spring Web
  37. Hamcrest Core⇑ 280 - This is the core API of hamcrest matcher framework to be used by third-party framework providers. This includes the a foundation set of matcher implementations for common operations.
  38. Gson⇑ 272 - Google Gson library
  39. Data Mapper for Jackson⇑ 265 - Data Mapper package is a high-performance data binding package built on Jackson JSON processor
  40. Jetty :: Server Core⇑ 258 - The core jetty server artifact.
  41. javax.inject⇑ 255 - The javax.inject API
  42. EasyMock⇑ 250 - EasyMock provides an easy way to create Mock Objects for interfaces and classes generating them on the fly
  43. HyperSQL Database⇑ 249 - HSQLDB - Lightweight 100% Java SQL Database Engine
  44. Groovy⇑ 247 - Groovy: A powerful, dynamic language for the JVM
  45. Javassist⇑ 246 - Javassist (JAVA programming ASSISTant) makes Java bytecode manipulation simple. It is a class library for editing bytecodes in Java.
  46. Hamcrest library⇑ 245 - Hamcrest library of matcher implementations.
  47. Google Guice - Core Library⇑ 243
  48. A Hibernate O/RM Module⇑ 239 - A module of the Hibernate O/RM project
  49. MySQL java connector⇑ 238 - MySQL java connector
  50. Jackson-annotations⇑ 233 - Core annotations used for value types, used by Jackson data binding package.
  51. Code Generation Library⇑ 229 - Code generation library
  52. FindBugs-jsr305⇑ 226 - JSR305 Annotations for Findbugs
  53. Spring Beans⇑ 226 - Spring Beans
  54. Google APIs Client Library for Java⇑ 219
  55. Hamcrest All⇑ 218 - A self-contained hamcrest jar containing all of the sub-modules in a single artifact.
  56. Commons Collections⇑ 217 - Types that extend and augment the Java Collections Framework.
  57. Weld SE (Core)⇑ 215 - Weld support for Java SE
  58. Spring Transaction⇑ 212 - Spring Transaction
  59. Hibernate Validator Engine⇑ 210 - Hibernate's Bean Validation (JSR-303) reference implementation.
  60. Objenesis⇑ 207 - A library for instantiating Java objects
  61. Plexus Common Utilities⇑ 206 - A collection of various utility classes to ease working with strings, files, command lines, XML and more.
  62. A Hibernate O/RM Module⇑ 203 - A module of the Hibernate O/RM project
  63. Scala Compiler⇑ 197 - Compiler for the Scala Programming Language
  64. JBoss Logging 3⇑ 197 - The JBoss Logging Framework
  65. Scala Compiler⇑ 190 - Compiler for the Scala Programming Language
  66. Spring Web MVC⇑ 189 - Spring Web MVC
  67. Logback Core Module⇑ 186 - logback-core module
  68. Jetty :: Servlet Handling⇑ 186 - Jetty Servlet Container
  69. Commons CLI⇑ 184 - Commons CLI provides a simple API for presenting, processing and validating a command line interface.
  70. specs2⇑ 182 - specs2
  71. Apache Derby Database Engine and Embedded JDBC Driver⇑ 182 - Contains the core Apache Derby database engine, which also includes the embedded JDBC driver.
  72. AProx :: API⇑ 180
  73. JavaMail API (compat)⇑ 178
  74. Maven Project Builder⇑ 172 - This library is used to not only read Maven project object model files, but to assemble inheritence and to retrieve remote models as required.
  75. Apache Ant Core⇑ 169
  76. Maven Plugin Tools Java 5 Annotations⇑ 166 - Java 5 annotations to use in Mojos
  77. Jackson⇑ 163 - Jackson is a high-performance JSON processor (parser, generator)
  78. Maven Core⇑ 162 - Maven Core classes.
  79. Apache HttpCore⇑ 158 - HttpComponents Core (blocking I/O)
  80. Apache Commons BeanUtils⇑ 156 - Apache Commons BeanUtils provides an easy-to-use but flexible wrapper around reflection and introspection.
  81. HttpClient⇑ 155 - The HttpClient component supports the client-side of RFC 1945 (HTTP/1.0) and RFC 2616 (HTTP/1.1) , several related specifications (RFC 2109 (Cookies) , RFC 2617 (HTTP Authentication) , etc.), and provides a framework by which new request types (methods) or HTTP extensions can be created easily.
  82. Spring JDBC⇑ 155 - Spring JDBC
  83. JPA 2.0 API⇑ 154 - Hibernate definition of the Java Persistence 2.0 (JSR 317) API.
  84. Log4j Implemented Over SLF4J⇑ 153 - Log4j implemented over SLF4J
  85. Annotations for SCR⇑ 152 - Annotations for generating OSGi service descriptors.
  86. AspectJ runtime⇑ 148 - The runtime needed to execute a program using AspectJ
  87. Jetty :: Webapp Application Support⇑ 147 - Jetty web application support
  88. Lucene Core⇑ 147 - Apache Lucene Java Core
  89. Spring AOP⇑ 147 - Spring AOP
  90. Apache Thrift⇑ 145 - Thrift is a software framework for scalable cross-language services development.
  91. AProx :: File Management :: Default⇑ 144
  92. com.google.gwt:gwt-user⇑ 143
  93. MongoDB Java Driver⇑ 139 - The MongoDB Java driver
  94. Commons DBCP⇑ 139 - Commons Database Connection Pooling
  95. HK2 API module⇑ 138 -
  96. SLF4J JDK14 Binding⇑ 138 - SLF4J JDK14 Binding
  97. Spring Context Support⇑ 136 - Spring Context Support
  98. JUL to SLF4J bridge⇑ 135 - JUL to SLF4J bridge
  99. Apache Commons FileUpload⇑ 134 - The Apache Commons FileUpload component provides a simple yet flexible means of adding support for multipart file upload functionality to servlets and web applications.
  100. scruffy-http⇑ 129 - scruffy-http

New Google's Material design

“Focus on the user and all else will follow.” - design materials from google, checkout the reel and the pdf.