SkillAgentSearch skills...

Ndapi

A .NET wrapper for Oracle Forms Open API

Install / Use

/learn @felipebz/Ndapi
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Ndapi

Build NuGet Version License

Oracle Forms ships with an Open API that allows C/C++ developers to open, edit, and compile module files (.fmb, .mmb, .olb, .pll). For Java developers, Oracle provides the JDAPI (Java Design-time API) a Java 2 wrapper around the same Open API functionality. However, JDAPI's pre-generics design and iterator-style collections often result in verbose and error-prone code.

Ndapi brings the power of the Open API to .NET, offering an idiomatic, strongly-typed API that feels natural to C# developers.

How Ndapi compares to JDAPI

Here’s a comparison of key points:

| | JDAPI (Java) | Ndapi (.NET) | |----------------------|---------------------------------------------|------------------------------------------------| | Language | Java 2 (pre-generics design) | C# with modern .NET features | | Type Safety | Low (manual casting, raw collections) | High (strongly-typed, generics, LINQ support) | | Iteration | Custom iterator (JdapiIterator) | Native .NET IEnumerable<T> | | Memory Management | Manual (.destroy() calls required) | Automatic (IDisposable + using var) | | Deployment | Requires JVM and Oracle native libraries | Requires .NET 8.0+ and Oracle native libraries | | Package Distribution | Manual jar (not available on Maven central) | Distributed via NuGet |

Benefits of Ndapi:

  • Leverages modern C# language features
  • Strong compile-time type checking
  • Simplified resource management (via IDisposable)
  • Compatible with .NET Trimming and NativeAOT

Example: JDAPI vs Ndapi

JDAPI (Java)

FormModule module = FormModule.open(sourceFileName);
JdapiIterator programUnits = module.getProgramUnits();
while (programUnits.hasNext()) {
    ProgramUnit programUnit = (ProgramUnit)programUnits.next();
    String name = programUnit.getName();
    // ...
}

Ndapi (C#)

using var module = FormModule.Open(sourceFileName);
foreach (var programUnit in module.ProgramUnits)
{
    var name = programUnit.Name;
    // ...
}

Supported Oracle Forms versions

| Oracle Forms | Architecture | OS | |--------------|--------------|----------------| | 6.0.8.22.1 | x86 | Windows | | 12.2.1.3 | x64 | Windows, Linux | | 12.2.1.4 | x64 | Windows, Linux | | 12.2.1.19 | x64 | Windows, Linux | | 14.1.2.0 | x64 | Windows, Linux |

Need support for a different version? Open an issue.

Installation

Stable releases

> dotnet add package Ndapi

Nightly / CI builds

> dotnet nuget add source "https://github.com/felipebz/ndapi/pkgs/nuget" --name "ndapi-dev"
> dotnet add package Ndapi --prerelease -s "ndapi-dev"

Platform target

  • Forms 6i → compile your app for x86
  • Forms 12c/14c → compile your app for x64

Related Skills

View on GitHub
GitHub Stars12
CategoryDevelopment
Updated13d ago
Forks4

Languages

C#

Security Score

90/100

Audited on Mar 25, 2026

No findings