Local candidates only
1099 strongly preferred
The senior developer will work on one of the Scrum teams re-developing a suite of applications on a modern Java platform.
Structure of Our Applications
Web users access our applications via standard web browsers, and the applications our customers create can make use of a “browserless” web services interface to our applications. In each case, a single sign-on (SSO) solution secures access to our systems and data. The SSO solution makes use of a Security Token Service (STS) – login attempts are redirected to the STS, which processes authentication credentials and provides a token to be used for subsequent authorizations by the application or service. Integration to our in-house authentication and authorization system is provided by the framework’s SSO elements.
Our in-house defined application framework provides our approved ThemeRoller theme, the standard JSF XHTML page layout, and all Single Sign-On (SSO) capabilities including the login dialog. Use of the common layout and theme ensures a consistent look and feel across the developed applications.
The integration layer consists of a suite of RESTful web services. These services currently are used primarily to facilitate our customers’ Business Process Automation, but could also be used by other of our applications. Customers leverage these services to write applications that provide and/or consume information managed by our applications. We simply provide a single JAR file to support all applications and a suite of available RESTful service URLs. The format of the response to service calls is either based on the URL or a single expected default – CSV, XML, and others may be provided. For “upload” type operations, we provide the customer with XSD files that govern the structure of any XML information sent to us. The services use JAX-RS (which is part of Java EE 6) as the standard.
Java Enterprise Edition (JEE) and Contexts and Dependency Injection (CDI) provide APIs, runtime context and control, and additional facilities to run Java applications and execute Java web services. Within the JEE/CDI envelope, Enterprise Java Beans (EJBs) are used to house business logic and for data insert, update, and delete. Controllers are in-house-built “traffic cops” that manage application processing. Our framework provides base classes for controllers, data access objects (DAOs), and most every other core programming element that a developer may need to implement required business logic in a JEE environment.
The data access layer uses the Java Persistence API (JPA) as a primary means of interaction with Oracle (“true runtime”) and H2 (for unit testing). JDBC is used to call database stored procedures, mostly when JPA’s capabilities fall short of meeting a data access need. Inserts, updates, and deletes of data are generally facilitated by Enterprise Java Beans (EJBs). Additionally, Apache database utilities support various data access and manipulation needs.
Developers use Eclipse as their development environment, and run the JBoss application server locally for development. Maven archetypes provide a base projects in standard way, simplifying creation of new applications, and ensuring a consistent basis for development.
An automated continuous integration (CI) environment merges all software changes, then tags, checks, builds, tests, and deploys an application. Our continuous integration environment is supported using Maven for build management, Nexus as a software asset repository, TeamCity for continuous integration management, and Subversion for source code and software asset control.
We employ a suite of quality management processes and tools for application development. On the process side, code reviews (supported by the Crucible peer review tool) and manual functional testing are core to quality management. In terms of automated quality management, we use TestNG and Selenium for unit and integration testing, and a collection of automated code analysis tools such as PMD and Findbugs. The development process is supported by Pivotal Tracker for agile project management and Confluence for knowledge sharing.
Our application framework provides a basis for application development that endeavors to minimize the developer’s need to attend to technical details and frees her/him to focus on filling the target business need. Project Object Model (POM) files are used with Maven to define the configuration of an application project and its dependencies.