Senior Java Developer
Forward-Deployed Engineer — Enterprise Java Modernization
About feature[23]
feature[23] is a Jacksonville-based software product development firm. Alongside our greenfield product work, we run forward-deployed engineering (FDE) engagements: senior engineers embedded full-time with a single enterprise client to modernize and de-risk a large, mission-critical codebase. This role is one of those engagements, a multi-year initiative to modernize a legacy Java estate for an enterprise client, moving it off end-of-life infrastructure and onto a modern, cloud-native foundation.
The Engagement
Our client runs roughly 95 Java EE enterprise applications on WebSphere, most of them carrying vulnerable dependencies, some of them 15+ years old. Compounding the problem, many of these apps rely on shared “parent” JAR libraries injected by the application server in “parent-first” class path mode, which makes even routine dependency upgrades risky: a single parent JAR bump can silently break any of the 95 apps at runtime, in ways that only show up when a specific code path is exercised. The mission is threefold: resolve the vulnerabilities living in direct, transitive, and parent JAR dependencies; get the apps off shared parent JARs entirely so future upgrades are safe and isolated; and prepare every application for eventual migration off WebSphere onto Liberty, which has no equivalent of parent-first class path resolution. Java 8 reaches end of support in 2030, so this isn't a someday project. You'll be one of the engineers doing that work, embedded with the client's team, working on their tickets, attending their ceremonies, and reporting technical progress back to feature[23]'s CTO.
What You'll Do
- Mavenize applications that are still built with Ant and untangle any implicit dependencies on parent JARs that aren't already declared, whether pulled in through Maven or transitive packages.
- Migrate app builds onto Azure DevOps Pipelines, pulling all dependencies from Azure DevOps Artifacts rather than UNC paths or client-hosted build servers.
- Upgrade vulnerable direct and transitive dependencies to non-vulnerable versions and resolve whatever build or runtime breakage the upgrade surfaces.
- Reconfigure applications and modules in WebSphere from Parent First to Parent Last class path resolution, then thoroughly exercise the app locally to catch class path conflicts that only appear at runtime.
- Own an application through its full promotion path: local testing, then dev, then QA, then production, coordinating with the WebSphere administrator at each stage to convert the app and module to Parent Last.
- Once every app has moved to Parent Last, help validate that the shared parent JARs can be safely retired, and test thoroughly to confirm nothing regresses.
- Work from a defined, sequenced modernization plan (highest-risk or most-vulnerable apps first) while using independent judgment on execution details for each app.
- As a senior, self-directed engineer, take ownership of requirements analysis, prioritization, and delivery for your workstream rather than working under a separate lead.
- Represent feature[23] directly in client meetings and working sessions; you'll need to hold your own with client stakeholders, not just execute tickets handed to you.
What We're Looking For
- Experience with Java web application frameworks such as JSF or Struts.
- Solid grounding in Java EE / J2EE architecture: WebSphere, EJBs, MDBs, and the broader enterprise application server ecosystem.
- Experience with web application modernization: dependency remediation, build-system migrations (Ant to Maven), and moving legacy apps toward containers and cloud-native infrastructure.
- Senior-level self-direction: comfortable owning a workstream end to end, from requirements through delivery, without a dedicated project lead.
- Strong client-facing communication skills; able to represent technical work and tradeoffs confidently and directly to client stakeholders.
- If you don't have JSF/Struts specifically but have strong Spring experience instead, we still want to hear from you — the concepts transfer, and the client's stack is heading toward Spring over the long term anyway.
Nice to Have
- Hands-on experience migrating applications from WebSphere to Liberty.
- Experience with containerization and Kubernetes deployment.
- Experience with Azure DevOps Pipelines and Azure DevOps Artifacts.
- Prior experience on a large-scale legacy modernization program, particularly one with 50+ applications in scope.
feature[23] values a diverse team and is an equal opportunity employer.
Important notice: All legitimate feature[23] openings are listed on this site. We do not use WhatsApp, Telegram, or personal email accounts to recruit or conduct interviews.
Fraud alert: feature[23] never charges fees at any stage of the recruitment process and will never ask for your banking details or personal financial information.
Our process: Our interview process always includes live video or in-person conversations with our team. We will never extend a job offer by text message or chat application, or without a formal interview.