Integrating InChI and RInChI
Native Libraries into Java
Applications
István Őri
We are your scientific partner to build a
sustainable future through innovating
best-in-class software solutions for
chemistry and biology.
About ChemAxon
About me
Name: István Őri
Job title: Technical Lead
Company: ChemAxon
Team: Representation & IO
WHY DID WE INTEGRATE?
Why?
Basically, because InChI and InChIKey are working.
They are useful identifiers which can represent chemical
structures in a canonical form, in a compact,
machine-friendly way.
HOW DID WE DO IT?
Access InChI software from Java
● Option A:
Expect the user to install and configure the InChI library and use it in a
process from Java
● Option B:
Wrap the native libraries within the Java application and access it via JNI or
JNA as an API
Option A
Pros:
● No extra trick required, can be used as a command line tool.
Cons:
● It is inconvenient for the user
● Handling of different versions of the InChI software is required
● The API offers more than the command line interface.
Option B
Pros:
● The API offers more than the command line interface.
● It is more convenient for the user
● Full control over the version of the library
Cons:
● It is inconvenient for the developer
● It is quite easy to work with C libraries in Java, but in case of C++ libraries it
can be difficult to manage complex data structures
Option B - Inconveniences
● Memory management in C/C++ and Java is very different
● It is relatively easy to manage structs and primitive variables, but the
management of class instances is on a whole other level
Option B - Weapon of choice
● JNI or JNA?
Option B - Solutions
● Memory management in C/C++ and Java is very different
Get used to it!
● It is relatively easy to manage structs and primitive variables, but the
management of class instances is on a whole other level
Use the subset of the API where structs and primitive variables are enough.
DTOs for Java API JNA Structs for C API InChI v1.05
Toolkits and services
Data transformations in Option B (InChI)
Data transformations in Option B (RInChI)
DTOs for Java API JNA String from C++ API
RInChI v1.00
Toolkits and services
RXN Export JNA String for C++ API
Fallback to InChI workflow
The result
Issues
● No Mac support
● No agents for RInChI export
FUTURE PLANS
Plans
● We would like to integrate InChI v1.06 instead of v1.05
● Make our Java library opensource
István Őri
iori@chemaxon.com

More Related Content

PPTX
Presentation
PPTX
The importance of C#
PDF
C and objective-C
PPTX
Introduction to C Programming Language
PDF
Program Oktober Ceria untuk Public Training AS/400 Programming
PPTX
Introduction to c
PDF
Public Training RPG IV (free format) Programming Workshop for System i from B...
DOC
CV_reuven_shefer
Presentation
The importance of C#
C and objective-C
Introduction to C Programming Language
Program Oktober Ceria untuk Public Training AS/400 Programming
Introduction to c
Public Training RPG IV (free format) Programming Workshop for System i from B...
CV_reuven_shefer

What's hot (7)

PPTX
Presentation1
PDF
Java vs. Kotlin: Which is the Better Option for Android App Development
PPTX
C Language
PDF
Calling The Notes C Api From Lotus Script
PPTX
6 Week C++ Language Training In Ambala
PPT
Object oriented slides
PPT
Lecture 11
Presentation1
Java vs. Kotlin: Which is the Better Option for Android App Development
C Language
Calling The Notes C Api From Lotus Script
6 Week C++ Language Training In Ambala
Object oriented slides
Lecture 11
Ad

Similar to Integrating InChI and RInChI Native Libraries into Java Applications (20)

PPTX
PPT
Introduction to java advanced imaging
PPTX
PDF
Integration of java ee applications on c – based implementations
PPTX
GOTO Night with Charles Nutter Slides
PPTX
Android ndk - Introduction
PPT
C++ programming with jni
PDF
NDK Programming in Android
PDF
109842496 jni
PDF
NDK Primer (AnDevCon Boston 2014)
PDF
Panama4Newbies_Atlanta.pdf
PDF
Panama4Newbies_Atlanta.pdf
PDF
Panama4Newbies_Jfokus2_slides.pdf
PDF
Android and cpp
PPT
ChemAxon For Developers
PPTX
NDK Introduction
PDF
Android Native Development Kit
PDF
Introduction to java advanced imaging
PDF
Using the Android Native Development Kit (NDK)
PPT
J interop
Introduction to java advanced imaging
Integration of java ee applications on c – based implementations
GOTO Night with Charles Nutter Slides
Android ndk - Introduction
C++ programming with jni
NDK Programming in Android
109842496 jni
NDK Primer (AnDevCon Boston 2014)
Panama4Newbies_Atlanta.pdf
Panama4Newbies_Atlanta.pdf
Panama4Newbies_Jfokus2_slides.pdf
Android and cpp
ChemAxon For Developers
NDK Introduction
Android Native Development Kit
Introduction to java advanced imaging
Using the Android Native Development Kit (NDK)
J interop
Ad

More from Eszter Szabó (7)

PDF
Compound design and progression tracking with CROs
PDF
Compound design and progression tracking with CROs
PDF
New way of writing chemistry patents english
PDF
The new way of writing chemistry patents
PDF
How to find leads and analogs in Enamine REAL using a highly scalable search ...
PDF
Automation of building reliable models
PDF
Computational tools for drug discovery
Compound design and progression tracking with CROs
Compound design and progression tracking with CROs
New way of writing chemistry patents english
The new way of writing chemistry patents
How to find leads and analogs in Enamine REAL using a highly scalable search ...
Automation of building reliable models
Computational tools for drug discovery

Recently uploaded (20)

PPTX
flavonoids/ Secondary Metabolites_BCH 314-2025.pptx
PPTX
Posology_43998_PHCEUTICS-T_13-12-2023_43998_PHCEUTICS-T_17-07-2025.pptx
PPTX
EPILEPSY UPDATE in kkm malaysia today new
PPTX
Introduction of Plant Ecology and Diversity Conservation
PDF
Microplastics: Environmental Impact and Remediation Strategies
PDF
final prehhhejjehehhehehehebesentation.pdf
PPT
ZooLec Chapter 13 (Digestive System).ppt
PPT
INSTRUMENTAL ANALYSIS (Electrochemical processes )-1.ppt
PPTX
Cutaneous tuberculosis Dermatology
PDF
Glycolysis by Rishikanta Usham, Dhanamanjuri University
PPTX
Thyroid disorders presentation for MBBS.pptx
PPT
dcs-computertraningbasics-170826004702.ppt
PPT
ecg for noob ecg interpretation ecg recall
PPTX
Chromosomal Aberrations Dr. Thirunahari Ugandhar.pptx
PDF
Thyroid Hormone by Iqra Nasir detail.pdf
PDF
ECG Practice from Passmedicine for MRCP Part 2 2024.pdf
PDF
Sustainable Biology- Scopes, Principles of sustainiability, Sustainable Resou...
PPTX
The Female Reproductive System - Grade 10 ppt
PPTX
Targeted drug delivery system 1_44299_BP704T_03-12-2024.pptx
PPTX
The Electromagnetism Wave Spectrum. pptx
flavonoids/ Secondary Metabolites_BCH 314-2025.pptx
Posology_43998_PHCEUTICS-T_13-12-2023_43998_PHCEUTICS-T_17-07-2025.pptx
EPILEPSY UPDATE in kkm malaysia today new
Introduction of Plant Ecology and Diversity Conservation
Microplastics: Environmental Impact and Remediation Strategies
final prehhhejjehehhehehehebesentation.pdf
ZooLec Chapter 13 (Digestive System).ppt
INSTRUMENTAL ANALYSIS (Electrochemical processes )-1.ppt
Cutaneous tuberculosis Dermatology
Glycolysis by Rishikanta Usham, Dhanamanjuri University
Thyroid disorders presentation for MBBS.pptx
dcs-computertraningbasics-170826004702.ppt
ecg for noob ecg interpretation ecg recall
Chromosomal Aberrations Dr. Thirunahari Ugandhar.pptx
Thyroid Hormone by Iqra Nasir detail.pdf
ECG Practice from Passmedicine for MRCP Part 2 2024.pdf
Sustainable Biology- Scopes, Principles of sustainiability, Sustainable Resou...
The Female Reproductive System - Grade 10 ppt
Targeted drug delivery system 1_44299_BP704T_03-12-2024.pptx
The Electromagnetism Wave Spectrum. pptx

Integrating InChI and RInChI Native Libraries into Java Applications

  • 1. Integrating InChI and RInChI Native Libraries into Java Applications István Őri
  • 2. We are your scientific partner to build a sustainable future through innovating best-in-class software solutions for chemistry and biology. About ChemAxon
  • 3. About me Name: István Őri Job title: Technical Lead Company: ChemAxon Team: Representation & IO
  • 4. WHY DID WE INTEGRATE?
  • 5. Why? Basically, because InChI and InChIKey are working. They are useful identifiers which can represent chemical structures in a canonical form, in a compact, machine-friendly way.
  • 6. HOW DID WE DO IT?
  • 7. Access InChI software from Java ● Option A: Expect the user to install and configure the InChI library and use it in a process from Java ● Option B: Wrap the native libraries within the Java application and access it via JNI or JNA as an API
  • 8. Option A Pros: ● No extra trick required, can be used as a command line tool. Cons: ● It is inconvenient for the user ● Handling of different versions of the InChI software is required ● The API offers more than the command line interface.
  • 9. Option B Pros: ● The API offers more than the command line interface. ● It is more convenient for the user ● Full control over the version of the library Cons: ● It is inconvenient for the developer ● It is quite easy to work with C libraries in Java, but in case of C++ libraries it can be difficult to manage complex data structures
  • 10. Option B - Inconveniences ● Memory management in C/C++ and Java is very different ● It is relatively easy to manage structs and primitive variables, but the management of class instances is on a whole other level Option B - Weapon of choice ● JNI or JNA?
  • 11. Option B - Solutions ● Memory management in C/C++ and Java is very different Get used to it! ● It is relatively easy to manage structs and primitive variables, but the management of class instances is on a whole other level Use the subset of the API where structs and primitive variables are enough.
  • 12. DTOs for Java API JNA Structs for C API InChI v1.05 Toolkits and services Data transformations in Option B (InChI)
  • 13. Data transformations in Option B (RInChI) DTOs for Java API JNA String from C++ API RInChI v1.00 Toolkits and services RXN Export JNA String for C++ API Fallback to InChI workflow
  • 15. Issues ● No Mac support ● No agents for RInChI export
  • 17. Plans ● We would like to integrate InChI v1.06 instead of v1.05 ● Make our Java library opensource