Top 12 Java Consultant Skills to Put on Your Resume
In the competitive field of Java consulting, having a standout resume is crucial to catching the eye of potential employers. Highlighting the top skills that demonstrate your expertise and ability to tackle complex projects can significantly enhance your chances of landing your next big opportunity.
Java Consultant Skills
- Spring Framework
- Hibernate
- JPA (Java Persistence API)
- JUnit
- Maven
- RESTful APIs
- Microservices
- Docker
- Jenkins
- JSP (JavaServer Pages)
- Servlets
- JavaFX
1. Spring Framework
Spring Framework is an open-source, comprehensive framework for developing Java applications. It offers infrastructure support for building Java apps, emphasizing inversion of control (IoC), dependency injection, and aspect-oriented programming to enhance modularity and testing. It's widely used for enterprise Java development, simplifying configuration and integration of various components.
Why It's Important
Spring Framework is crucial for Java Consultants as it provides a comprehensive infrastructure for developing robust Java applications, simplifying enterprise-grade development, and promoting best practices through dependency injection, aspect-oriented programming, and a vast array of tools for web applications, security, data access, and more. This enhances productivity, application quality, and maintainability.
How to Improve Spring Framework Skills
Improving your proficiency with the Spring Framework as a Java Consultant involves a blend of enhancing your foundational knowledge, staying updated with the latest trends, and applying best practices in your projects. Here are concise tips to help you get started:
Strengthen Core Concepts: Ensure a solid understanding of Spring's core features like Dependency Injection, Aspect-Oriented Programming, and Spring MVC. The official Spring documentation is an excellent starting point.
Master Spring Boot: Spring Boot makes it easy to create stand-alone, production-grade Spring-based applications. Familiarize yourself with its conventions over configuration philosophy. The Spring Boot documentation provides comprehensive guidance.
Understand Spring Security: Security is paramount. Dive into Spring Security for authentication and authorization in your applications.
Explore Spring Cloud: For microservices architecture, Spring Cloud offers patterns for configuration management, service discovery, circuit breakers, and more. The Spring Cloud documentation is a critical resource.
Learn Reactive Programming: With the rise of data-intensive applications, understanding reactive programming with Spring WebFlux is beneficial. Check the Spring WebFlux documentation for more insights.
Follow Best Practices: Adhere to coding and design patterns best practices to write efficient and maintainable code. Blogs like Baeldung and Spring's own blog are great for learning and keeping up with new developments.
Contribute to Open Source: Engaging with the Spring Framework GitHub repository can provide practical experience and improve your understanding.
Networking and Continuous Learning: Join Spring communities, attend webinars, workshops, and conferences like SpringOne. Networking with other professionals can provide insights and tips that are not available in documentation.
By following these steps and actively seeking out new learning opportunities, you can significantly improve your Spring Framework skills and bring more value to your projects as a Java Consultant.
How to Display Spring Framework Skills on Your Resume
2. Hibernate
Hibernate is a Java-based, open-source Object-Relational Mapping (ORM) framework that simplifies the development of Java applications to interact with databases, by providing a bridge between object-oriented domain models and relational database systems.
Why It's Important
Hibernate is important because it simplifies database interactions and persistence management in Java applications, significantly reducing boilerplate code and improving development efficiency and database portability.
How to Improve Hibernate Skills
To improve Hibernate performance and effectiveness, consider the following concise tips tailored for a Java Consultant:
Use Lazy Loading: Utilize lazy loading to defer the initialization of an object. Hibernate supports this out-of-the-box. Hibernate - Lazy Loading.
Batch Processing: Leverage batch processing to reduce the number of database trips. Adjust the
hibernate.jdbc.batch_size
property for optimal performance. Batch Processing.Implement Second-Level Cache: Use a second-level cache to decrease the load on the database. Configure it appropriately for your use case. Second-Level Cache.
Optimize HQL/JPQL Queries: Fine-tune your HQL/JPQL queries to fetch only the necessary data using joins or selecting specific columns. HQL and JPQL.
Use Stateless Sessions for Bulk Operations: For operations that don't involve complex entity graphs or don't need first-level cache, consider stateless sessions. Stateless Sessions.
Identify and Fix N+1 Selects Problem: Use fetch joins to solve the N+1 selects issue, thereby minimizing the number of generated SQL queries. Fetching Strategies.
Connection Pooling: Utilize connection pooling (e.g., HikariCP) to manage database connections efficiently. Connection Pooling.
Implementing these strategies will significantly enhance the performance and scalability of your Hibernate-based applications.
How to Display Hibernate Skills on Your Resume
3. JPA (Java Persistence API)
JPA (Java Persistence API) is a Java specification for accessing, persisting, and managing data between Java objects/classes and a relational database. It provides a platform-independent object-relational mapping approach to handle database operations more efficiently.
Why It's Important
JPA standardizes data persistence in Java, enabling efficient database access and manipulation through object-relational mapping (ORM). This simplifies development, enhances portability across different databases, and improves application performance, making it essential for Java consultants to deliver robust and scalable enterprise solutions.
How to Improve JPA (Java Persistence API) Skills
Improving JPA (Java Persistence API) performance and productivity involves several strategies tailored to optimize data access and manipulation. For a Java Consultant, focusing on efficient practices and understanding the nuances of JPA can significantly enhance application performance and scalability. Here are concise recommendations:
Understand JPA Lifecycle and Caching: Familiarize yourself with entity lifecycle states (new, managed, detached, removed) and leverage JPA's first-level cache and optional second-level cache to reduce database access. Hibernate User Guide - Chapter 3. Domain Model
Effective Use of Lazy Loading: Use lazy loading wisely to defer initialization of collections or entities until they are explicitly accessed, reducing initial load time. However, avoid N+1 select issues by batching or fetching when necessary. Hibernate Performance Tuning Tips
Optimize JPQL Queries and Projections: Use JPQL (Java Persistence Query Language) or Criteria API efficiently by selecting only required fields rather than entire entities and utilizing JOIN FETCH for associated entities. JPQL Language Reference
Batch Processing for Bulk Operations: For bulk inserts, updates, or deletes, use JPA's batch processing capabilities to minimize database round-trips, adjusting JDBC batch size as needed. JPA EntityManager: Persisting an Entity
Connection Pooling: Implement connection pooling using frameworks like HikariCP to reduce the overhead of establishing database connections. HikariCP
Monitor and Analyze Performance: Utilize tools such as JPA Performance Monitoring, SQL log analysis, and JProfiler or VisualVM for identifying bottlenecks and optimizing queries. VisualVM
Database Schema Optimization: Ensure the database schema is optimized for performance, including proper indexing, normalized/denormalized structures as appropriate, and foreign key constraints. Database Indexing
Stay Current with JPA and Provider Documentation: Continuously update your knowledge with the latest JPA specifications and your chosen JPA provider's (e.g., Hibernate, EclipseLink) optimizations and features. JPA Specification
Use Spring Data JPA: For Spring-based applications, leverage Spring Data JPA to simplify data access layers, repositories, and reduce boilerplate code. Spring Data JPA
By implementing these strategies, Java Consultants can significantly improve JPA's efficiency and impact on application performance.
How to Display JPA (Java Persistence API) Skills on Your Resume
4. JUnit
JUnit is a popular open-source framework used for unit testing in Java, enabling developers to write and run repeatable automated tests to ensure code quality and correctness.
Why It's Important
JUnit is crucial for a Java Consultant as it ensures code reliability and quality through systematic testing, facilitating early bug detection, and promoting efficient, agile development practices.
How to Improve JUnit Skills
To improve your JUnit skills and practices as a Java Consultant, consider the following concise strategies:
Understand the Framework: Grasp the core concepts and functionalities of JUnit by reviewing the official JUnit documentation.
Leverage Asserts Effectively: Use the assert methods provided by JUnit to validate the expected outcomes of your tests. Understand the difference between
assertEquals
,assertTrue
, etc., to use them appropriately.Utilize Annotations: Familiarize yourself with JUnit annotations like
@Test
,@BeforeEach
, and@AfterEach
for defining tests and setup/teardown methods. The JUnit 5 User Guide details these annotations.Implement Parameterized Tests: Enhance test coverage efficiently by using parameterized tests to run the same test with different inputs. Learn more about them in the JUnit 5 User Guide on Parameterized Tests.
Practice Test-Driven Development (TDD): Develop a habit of writing tests before writing the code itself. This encourages better design and ensures functionality is verified. The Agile Alliance's introduction to TDD provides a good starting point.
Use Mocking Frameworks: Integrate mocking frameworks like Mockito to simulate behaviors of complex dependencies, allowing for isolated and focused unit tests. The Mockito documentation offers comprehensive guidance.
Incorporate Continuous Integration (CI): Set up CI pipelines using tools like Jenkins or Travis CI to automatically run your tests against your codebase. This ensures immediate feedback on the impact of changes. Travis CI's Getting Started guide can help you set this up.
Seek Feedback and Collaborate: Participate in code reviews and pair programming sessions to discuss and refine your testing strategies with peers.
Stay Updated: Follow industry blogs, participate in forums like Stack Overflow, and attend conferences or webinars to keep abreast of the latest trends and practices in testing.
Practice, Practice, Practice: Regularly write and refactor tests for different kinds of applications to deepen your understanding and proficiency with JUnit.
By focusing on these areas, you can significantly improve your JUnit skills and contribute more effectively to your projects as a Java Consultant.
How to Display JUnit Skills on Your Resume
5. Maven
Maven is a build automation and dependency management tool for Java projects, streamlining the build process and managing project dependencies through a project object model (POM) file.
Why It's Important
Maven is important for a Java Consultant because it streamlines project management and build processes through standardized project structures and automated dependency management, enhancing productivity and ensuring consistency across Java projects.
How to Improve Maven Skills
Improving your Maven setup involves several strategic enhancements focused on efficiency, dependency management, and build optimization. Here are concise tips for a Java Consultant:
Use Maven Profiles: Customize build processes for different environments (development, testing, production) efficiently. Maven Profiles Guide
Dependency Management: Utilize the
<dependencyManagement>
section in your POM to centralize and manage versions of dependencies. This simplifies the update process. Dependency ManagementIncremental Builds with Build Helper: Use plugins like Maven Build Helper to skip unchanged modules, speeding up the build process. Maven Build Helper Plugin
Parallel Builds: Leverage Maven's capability to build projects in parallel by using the
-T
option, significantly reducing build times. Maven Parallel BuildsEfficient Use of Maven Repositories: Configure and use a local repository manager like Nexus or Artifactory for caching and managing artifacts, reducing build times and improving reliability. Introduction to Repositories
Enforce Coding Standards: Integrate plugins like Checkstyle, PMD, or FindBugs into your Maven lifecycle to ensure code quality and consistency. Maven Checkstyle Plugin
Automate Deployment: Use Maven plugins for continuous integration and deployment. Automate your deployment process with Jenkins and Maven. Maven in Jenkins
Optimize POM Files: Keep your POM files clean and well-organized. Use properties for version management and ensure dependencies and plugins are up to date. POM Best Practices
Use Maven Wrapper: Ensure everyone uses the same Maven version within the project by employing Maven Wrapper. Maven Wrapper
By implementing these strategies, you can significantly improve your Maven setup, streamline your build process, and ensure a more efficient and reliable build lifecycle.
How to Display Maven Skills on Your Resume
6. RESTful APIs
RESTful APIs are interfaces that allow for interaction with web services using the principles of REST (Representational State Transfer), using standard HTTP methods (GET, POST, PUT, DELETE) to create, read, update, and delete resources, making them a popular choice for building scalable web applications, including those developed in Java.
Why It's Important
RESTful APIs are critical for a Java Consultant because they enable efficient, flexible integration and communication between different software applications, systems, or services over the web, using standard HTTP methods. This facilitates building scalable, maintainable, and secure distributed applications, essential in today's interconnected software development landscape.
How to Improve RESTful APIs Skills
Improving RESTful APIs, especially from a Java Consultant's perspective, involves focusing on best practices that ensure scalability, maintainability, and performance. Here are key points with concise descriptions and relevant external resources:
Use HTTP Methods Appropriately: Align HTTP methods (
GET
,POST
,PUT
,DELETE
, etc.) with CRUD operations to maintain consistency and predictability.Implement Proper Status Codes: Use HTTP status codes correctly to communicate the outcome of API requests, aiding in troubleshooting and client handling.
Version Your API: Ensure backward compatibility and ease transition by versioning your API from the start.
Leverage Caching: Improve performance and reduce server load by implementing caching strategies.
Secure Your API: Implement authentication, authorization, and encryption to protect your API and data.
Document Your API: Use tools like Swagger or OpenAPI for documenting your API, making it easier for developers to understand and integrate.
Use HATEOAS: Hypermedia as the Engine of Application State (HATEOAS) makes your API discoverable and self-descriptive.
Optimize Data Transfer: Use techniques like pagination, filtering, and field selection to minimize data transfer.
- REST Pagination
Adopt JSON for Payloads: JSON is widely supported and the most commonly used format for API payloads, offering a good balance between readability and efficiency.
Monitor and Log: Implement monitoring and logging to track API usage, performance issues, and to debug errors efficiently.
- API Monitoring
Improving RESTful APIs is an ongoing process that involves adapting to new practices and technologies. Regularly reviewing and refactoring your API design and implementation is crucial for maintaining a high-quality service.
How to Display RESTful APIs Skills on Your Resume
7. Microservices
Microservices are a software architecture style where applications are structured as a collection of loosely coupled, independently deployable services, each running a unique process and communicating through lightweight protocols. For a Java Consultant, this approach facilitates scalable, flexible systems development and deployment, leveraging Java's ecosystem and tools like Spring Boot for efficient service creation and management.
Why It's Important
Microservices architecture is important for a Java Consultant because it enables the development of flexible, scalable, and independently deployable software systems, allowing for easier maintenance, faster time-to-market, and improved resilience, which aligns with modern business needs and cloud-native environments.
How to Improve Microservices Skills
Improving microservices, especially from a Java consultant's perspective, involves focusing on several key areas to enhance performance, maintainability, and scalability. Here are concise strategies with relevant resources:
Adopt Domain-Driven Design (DDD): Align your microservices with business domains to ensure they are self-contained, making them easier to develop, deploy, and scale.
Embrace DevOps Practices: Implement continuous integration and continuous delivery (CI/CD) pipelines to automate testing and deployment, improving reliability and speed.
Implement API Gateways: Use API gateways to manage incoming requests to your microservices, providing a single entry point that can handle load balancing, authentication, and caching.
Ensure Scalability with Containerization: Leverage Docker and Kubernetes for containerization and orchestration to scale microservices independently and ensure efficient resource use.
Prioritize Security: Implement OAuth, JWTs (JSON Web Tokens), and HTTPS to secure communications between microservices and protect sensitive data.
Employ Resilient Design Patterns: Use patterns such as Circuit Breaker, Bulkhead, and Retry to build resilience into your microservices, ensuring they can handle failures gracefully.
Optimize Database Interactions: Use the appropriate database (SQL or NoSQL) for each microservice, and implement caching and database sharding to enhance performance.
- Database Patterns
Monitor and Log Effectively: Implement centralized logging and monitoring tools (e.g., ELK Stack, Prometheus) to track the health and performance of your microservices.
Refactor Legacy Applications Gradually: Use the Strangler Fig Pattern to incrementally replace parts of a legacy system with microservices, reducing risk.
Invest in Learning and Experimentation: Stay updated with the latest trends in microservices architecture and tools through continuous learning and experimentation.
- Spring Boot for microservices in Java.
- Micronaut as a modern, JVM-based framework for building microservices.
Enhancing microservices involves a combination of adopting best practices in design, security, scalability, and continuous learning to adapt to new challenges and tools in the ecosystem.
How to Display Microservices Skills on Your Resume
8. Docker
Docker is a platform for developing, shipping, and running applications inside lightweight, portable containers, enabling consistent behavior across various environments, ideal for deploying Java applications efficiently.
Why It's Important
Docker simplifies software development, deployment, and execution by creating lightweight, portable containers for applications. For a Java Consultant, it ensures consistent environments from development through production, streamlines application delivery, and facilitates microservices architecture, enhancing efficiency and reducing compatibility issues across different platforms.
How to Improve Docker Skills
Improving Docker performance and efficiency, especially from a Java Consultant perspective, involves several best practices, including optimizing Dockerfiles, managing resources wisely, and ensuring security. Here’s a concise guide:
Optimize Docker Images: Use multi-stage builds to reduce image size, focusing on creating lean and efficient images. Docker Multi-stage Builds.
Leverage Build Cache: Structure Dockerfiles to maximize layer caching, placing instructions that change less frequently towards the top. Leverage build cache.
Limit JVM Heap Size: In a containerized environment, it’s crucial to manage the JVM heap size to avoid memory waste or out-of-memory errors. JVM in a Container.
Implement Health Checks: Use Docker’s HEALTHCHECK instruction or container orchestration tools to monitor and manage container health. Healthcheck Instruction.
Secure Your Containers: Apply best practices for securing your Docker containers, such as using trusted base images, scanning for vulnerabilities, and minimizing runtime privileges. Docker Security Best Practices.
Efficient Logging: Configure logging properly to avoid performance impact, using Docker’s logging drivers and tools like Fluentd or Logstash for log aggregation. Configure logging drivers.
Use Docker Compose for Development: Simplify the setup of multi-container applications in a development environment with Docker Compose. Docker Compose.
Continuous Integration/Continuous Deployment (CI/CD): Integrate Docker within your CI/CD pipeline for consistent and efficient deployment processes. Docker in CI/CD.
Monitor Performance: Use tools like cAdvisor, Prometheus, or Grafana to monitor Docker containers and gather insights to optimize performance. Docker Monitoring.
Educate and Stay Updated: Continuously educate yourself on Docker and container technology through official Docker documentation and trusted community resources. Docker Documentation.
By following these guidelines and staying informed on the latest Docker practices and tools, you can significantly improve Docker usage in your Java projects.
How to Display Docker Skills on Your Resume
9. Jenkins
Jenkins is an open-source automation server used for continuous integration and continuous delivery (CI/CD) in software development, allowing developers to automatically build, test, and deploy applications, including Java-based projects.
Why It's Important
Jenkins is crucial for a Java Consultant as it automates the build, test, and deployment processes, enhancing efficiency, consistency, and speed in delivering Java applications.
How to Improve Jenkins Skills
Improving Jenkins for a Java Consultant involves optimizing performance, enhancing security, and streamlining workflows. Here's a concise guide:
Optimize Performance: Leverage the Jenkins Performance Plugin to monitor and enhance build times. Implement distributed builds using Jenkins agents to parallelize workloads.
Enhance Security: Regularly update Jenkins and installed plugins to their latest versions. Configure Jenkins Security by enforcing strong authentication and authorization strategies. Utilize the OWASP Dependency-Check Plugin to identify and mitigate vulnerabilities in project dependencies.
Streamline Workflows: Adopt Pipeline as Code with Jenkinsfile to manage and version control your build pipelines. Utilize Shared Libraries for reusable code across projects, ensuring DRY principles.
Monitor and Log: Integrate ELK Stack (Elasticsearch, Logstash, Kibana) for advanced logging and monitoring. Plugging Jenkins into ELK can help in diagnosing build failures and performance issues.
Automate and Schedule: Use the Job DSL Plugin for creating jobs programmatically, and the Build Flow Plugin for managing complex build pipelines. Schedule jobs smartly to avoid peak times and ensure resource availability.
By focusing on these areas, a Java Consultant can significantly improve Jenkins's performance, security, and usability, leading to more efficient and reliable build and deployment processes.
How to Display Jenkins Skills on Your Resume
10. JSP (JavaServer Pages)
JSP (JavaServer Pages) is a server-side technology by Oracle that allows developers to create dynamically generated web pages based on HTML, XML, or other document types, using Java code embedded within HTML/XML. It is commonly used to build interactive and dynamic web applications in Java environments.
Why It's Important
JSP (JavaServer Pages) is important for a Java Consultant because it enables the development of dynamic, server-side web applications efficiently by allowing the embedding of Java code directly into HTML pages, facilitating rapid development and ease of maintenance.
How to Improve JSP (JavaServer Pages) Skills
To improve JavaServer Pages (JSP) development, follow these concise strategies:
Use JSP Standard Tag Library (JSTL): Instead of scriptlets, leverage JSTL to keep the logic separate from the presentation layer, enhancing readability and maintainability. JSTL Info.
Adopt MVC Framework: Implement an MVC (Model-View-Controller) framework like Spring MVC to organize your application in a structured manner. This separation of concerns makes your application more scalable and easier to maintain. Spring MVC.
Utilize Custom Tags: Create custom tags for repetitive tasks. This reduces clutter in JSP pages and promotes reusability. Creating Custom Tags.
Optimize JSP Performance: Use techniques such as caching static content, minimizing session objects, and efficiently managing database connections to improve performance. Performance Tips.
Security Practices: Protect against common vulnerabilities like XSS (Cross-Site Scripting) and SQL injection by validating and sanitizing inputs. Employ JSP directives to prevent the creation of session IDs in URLs. Security Practices.
Code Quality and Standards: Use tools like SonarQube to analyze and improve code quality, ensuring adherence to best practices and coding standards. SonarQube.
Continuous Learning: Stay updated with the latest JSP and Servlet specifications and advancements by following authoritative resources such as Oracle's Official Java EE Documentation.
By focusing on these aspects, you can significantly enhance the efficiency, maintainability, and security of your JSP-based applications.
How to Display JSP (JavaServer Pages) Skills on Your Resume
11. Servlets
Servlets are server-side Java programs that handle client requests, process them, and generate dynamic responses, typically for web applications. They extend the capabilities of servers by allowing web-based applications to handle complex or customized requests.
Why It's Important
Servlets are crucial in Java-based web development because they enable dynamic content generation and handling of HTTP requests and responses on the server-side, facilitating robust, scalable web applications.
How to Improve Servlets Skills
Improving Servlets involves enhancing performance, security, and maintainability. Here are concise strategies tailored for a Java Consultant:
Performance Optimization:
- Employ asynchronous processing when handling long-running tasks to free up the thread and improve scalability. Oracle Docs on Async
- Use connection pooling for database interactions to reduce latency. Connection Pooling Guide
Security Enhancements:
- Implement HTTPS and secure communication protocols to protect data in transit. Configuring HTTPS
- Sanitize input to prevent SQL injection and XSS attacks. OWASP Prevention Cheat Sheet
Code Maintainability:
- Adopt the MVC pattern to separate business logic, presentation, and data access layers, improving code organization. MVC Pattern Explained
- Use Servlet Filters for cross-cutting concerns like logging and authentication to keep servlets focused on their primary responsibility. Servlet Filters Tutorial
Scalability:
- Leverage load balancing across multiple servlet instances in high-traffic scenarios. Load Balancing Basics
- Optimize session management, potentially using distributed caching for session data to support scalability. Distributed Caching Explanation
Monitoring and Logging:
- Implement comprehensive logging and monitoring to detect performance bottlenecks and unusual behavior promptly. Effective Logging Practices
- Use tools like JMX (Java Management Extensions) for real-time monitoring and management of applications. JMX Guide
By addressing these areas, you can significantly improve the efficiency, security, and maintainability of Servlet-based applications.
How to Display Servlets Skills on Your Resume
12. JavaFX
JavaFX is a Java library used for developing rich Internet applications with a lightweight user interface API, featuring hardware-accelerated graphics and media capabilities designed to provide a modern user experience across a wide range of devices.
Why It's Important
JavaFX is important for a Java Consultant because it provides a modern, rich client platform for developing and delivering cross-platform desktop applications and rich Internet applications (RIAs), enabling the creation of visually appealing, high-performance user interfaces.
How to Improve JavaFX Skills
Improving JavaFX, especially from a Java Consultant's perspective, involves focusing on performance, maintainability, and leveraging the latest features. Here are concise strategies:
- Update to the Latest Version: Always use the latest version of JavaFX to benefit from performance improvements, bug fixes, and new features.
- Leverage CSS for Styling: Use CSS for styling your JavaFX applications. It separates the presentation style from the application logic, making maintenance easier.
- Profile Performance: Use profiling tools such as VisualVM to identify and optimize performance bottlenecks.
- Favor FXML for UI Design: Use FXML to design your UI. It simplifies UI changes without altering the application's logic.
- Adopt Modular Development: Follow Java Module System practices to make your JavaFX application more maintainable and scalable.
- Utilize Scene Builder: Employ Scene Builder to design your UI visually. It accelerates UI development and encourages separation of concerns.
- Follow Best Practices: Adhere to JavaFX best practices, such as using Property and Binding for more efficient data management and UI updates.
- Leverage Third-Party Libraries: Incorporate reliable third-party libraries to add functionality without reinventing the wheel. Research on GitHub or Maven Central for libraries that suit your needs.
- Continuous Learning: Stay updated with the latest trends and advancements in JavaFX by following official blogs and community forums.
Focusing on these areas will significantly enhance the quality, performance, and maintainability of JavaFX applications.