Platform Software Engineer

Oracle · Nashville, TN, US

Spotted 18h agofulltime
Job description

About this role

Employer-provided description, formatted for easier reading.

Delivers routine and some non-routine work on JVM JIT compilers under moderate supervision. Implements focused enhancements to OpenJDK compiler components and troubleshoots correctness and performance issues using established development and testing practices.

Analyzes generated code and test results, contributes to support for evolving Java features, and collaborates with Java platform and OCI teams to help maintain reliable Java execution.

Key Responsibilities

------------------------

JVM JIT Compiler Development:

  • Develops and tests focused enhancements to OpenJDK JIT compilers, including work involving type systems, optimizations, vector operations, and processor-specific code generation.
  • Contributes to compiler support for evolving Java features, including value classes developed through Project Valhalla.
  • Validates compiler changes across supported platforms and Java features to preserve program behavior and prevent performance regressions.

Software Development, Testing, and Optimization:

  • Analyzes compiler and runtime requirements and contributes to the design of JIT optimizations with limited guidance.
  • Develops and reviews code following design specifications and OpenJDK development practices.
  • Investigates incorrect program results, compilation failures, compiler crashes, excessive resource use, and performance regressions.
  • Develops fixes for identified issues and verifies them through targeted, exhaustive, or randomized testing, as appropriate.
  • Analyzes generated assembly, compiler diagnostics, and benchmark results to assess correctness and performance.
  • Contributes improvements to compiler diagnostics, tests, and documentation.

Issue and Defect Collaboration:

  • Collaborates within the Java Platform Group and with OCI teams to understand issues, investigate causes, and align on solutions.
  • Communicates findings and proposed fixes to colleagues and participates in code review.
  • Escalates broader design or cross-component issues to experienced engineers as needed.

Development Practices and System Maintenance:

  • Follows established coding, security, testing, and release practices.
  • Maintains compiler tests and investigates interactions between compiled code, the JVM runtime, and garbage collection.
  • Identifies small improvements to debugging, verification, and development workflows.

Core Responsibilities

-------------------------

Planning and Execution: Tracks assigned work and adjusts priorities with guidance as requirements or timelines change.

Collaboration and Partnership

Works with teammates and partner teams to understand technical needs and achieve shared objectives.

Problem Solving

Gathers evidence from tests, generated code, benchmarks, and issue reports to troubleshoot standard and some non-standard problems.

Continuous Learning and Improvement

Develops expertise in compiler and runtime systems, applies feedback, and contributes to improvements in team practices.

Qualifications

------------------

  • Experience developing or debugging compilers, virtual machines, runtimes, or comparable systems software.
  • Hands-on experience with JVM internals and JIT compiler development or debugging.
  • Experience working with the OpenJDK codebase and its development practices.
  • Strong proficiency in C++, including developing and debugging complex systems software.
  • Programming experience in Java.
  • Experience applying compiler concepts such as intermediate representations, optimization, type systems, or code generation.
  • Understanding of processor architecture and its relationship to generated code.
  • Familiarity with interactions between JIT-compiled code and garbage collection.
  • Experience using benchmarks or performance profiles to evaluate software changes.
  • Experience analyzing generated assembly to diagnose correctness or performance issues.

Ability to investigate complex defects, validate fixes with tests, and communicate technical findings.

*

Helpful experience: Vectorization, randomized compiler testing, or cross-platform compiler testing.

Interested in this role?Continue on Oracle's careers page.
Apply on Oracle