dotnet add package J2N --version 2.0.0
NuGet\Install-Package J2N -Version 2.0.0
<PackageReference Include="J2N" Version="2.0.0" />
paket add J2N --version 2.0.0
#r "nuget: J2N, 2.0.0"
// Install J2N as a Cake Addin #addin nuget:?package=J2N&version=2.0.0 // Install J2N as a Cake Tool #tool nuget:?package=J2N&version=2.0.0
J2N - Java-like Components for .NET
J2N is a library that helps bridge the gap between .NET and Java.
- Java-like behaviors
- .NET-like APIs
- Be the defacto library to use when porting from Java to .NET
- Provide high quality, high performance components that can be used in a wide range of .NET applications
Basically, if you are looking for a "JDK.NET", this is about as close as you can get. While we recommend using purely .NET components where possible when porting from Java, there are some Java features that have no .NET counterpart or the .NET counterpart is lacking behaviors that are not easy to reproduce without reinventing the wheel. Even if you prefer to reinvent the wheel by designing your own ".NETified" component, you may still need a Java-like component to compare your component against in tests.
That is why we created J2N. If you like this idea, please be sure to star our repository on GitHub.
- Text analysis: code points, normalizing behaviors between different "character sequence" types, tokenizing, etc.
- I/O: Reading and writing types in both big-endian and little-endian byte order and providing specialized behaviors for interop with Java-centric file formats.
- Collections: .NET's cupboard is a little bare when it comes to specialized collections, so we fill in some gaps.
- Equality: Compare collections for structural equality with behaviors that are specific to each collection family, and provide .NET equality comparers for other types that differ in behavior.
- Localization: Bridge the gap between .NET's culture-aware and Java's culture-neutral defaults.
We love getting contributions! If you need something from the JDK that we don't have, this is the right place to submit it. Basically, the following are things that would be a good fit for this library:
- Components in the JDK that have no direct counterpart in .NET, or the counterpart is lacking features
- Features that make J2N easier to work with in .NET such as extension methods and adapters
- Features that make .NET interoperate with Java better
Building and Testing
To build the project from source, see the Building and Testing documentation.
If you find this library to be useful, please star us on GitHub and consider a sponsorship so we can continue bringing you great free tools like this one.
|Product||Versions Compatible and additional computed target framework versions.|
|.NET||net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed.|
|.NET Core||netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 is compatible. netcoreapp3.1 was computed.|
|.NET Standard||netstandard2.0 is compatible. netstandard2.1 is compatible.|
|.NET Framework||net40 is compatible. net403 was computed. net45 is compatible. net451 was computed. net452 was computed. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed.|
|MonoAndroid||monoandroid was computed.|
|MonoMac||monomac was computed.|
|MonoTouch||monotouch was computed.|
|Tizen||tizen40 was computed. tizen60 was computed.|
|Xamarin.iOS||xamarinios was computed.|
|Xamarin.Mac||xamarinmac was computed.|
|Xamarin.TVOS||xamarintvos was computed.|
|Xamarin.WatchOS||xamarinwatchos was computed.|
NuGet packages (12)
Showing the top 5 NuGet packages that depend on J2N:
Lucene.Net is a full-text search engine library capable of advanced text analysis, indexing, and searching. It can be used to easily add search capabilities to applications. Lucene.Net is a C# port of the popular Java Lucene search engine framework from The Apache Software Foundation, targeted at .NET Framework and .NET Core users.
Replicator that allows replication of files between a server and client(s) for the Lucene.NET full-text search engine library from The Apache Software Foundation. Documentation: https://lucenenet.apache.org/docs/4.8.0-beta00016/api/replicator/Lucene.Net.Replicator.html This package is part of the Lucene.NET project: https://www.nuget.org/packages/Lucene.Net/4.8.0-beta00016
ICU (International Components for Unicode) is a set of libraries providing Unicode and Globalization support for software applications. It provides Text-boundary analysis (RuleBasedBreakIterator) as well as easy access to all of the many Unicode character properties, Unicode Normalization, Case Folding and other fundamental operations as specified by the Unicode Standard. ICU4N is a .NET port of ICU4J.
RandomizedTesting.Generators contains generators for random numbers, several forms of text (ASCII, Unicode, realistic Unicode, HTML-like, regular expression-like) as well providing methods to pick random selections from collections and arrays and even create randomly generated Regex classes. These features are implemented as simple low-level extension methods to for the Random class so there is very little to learn to quickly generate random data for your tests. Why would you want tests to have random data? This is to fill situations where it is not practical to test the entire range of values in a single test run, for example, with applications that analyze text. Tests can instead be designed to provide different input every time they run to catch edge cases that are difficult to test for. Generating random data also has many other purposes, such as quickly generating a set of text files to benchmark with without having to store several hundred MB worth of files (since the same random seed will always generate the same data).
Analyzer for indexing Chinese for the Lucene.NET full-text search engine library from The Apache Software Foundation. Documentation: https://lucenenet.apache.org/docs/4.8.0-beta00016/api/analysis-smartcn/Lucene.Net.Analysis.Cn.Smart.html This package is part of the Lucene.NET project: https://www.nuget.org/packages/Lucene.Net/4.8.0-beta00016
GitHub repositories (3)
Showing the top 3 popular GitHub repositories that depend on J2N:
Utility for quickly generating Baldur's Gate 3 mod packs from an unpacked workspace (among other things).
Integrated Library System / 图书馆集成系统