Native Library provides a low-level optimization with productivity for C/C++ application.
- Blazing fast performance, small footprint, low-level access with GAS & C
- Provide rich Java core packages for productivity & maintainability
- Zero memory leak with automatic storage
- Prevents segfaults and null pointer exception
This project is also useful for new developers in practical programming.
$ git clone https://github.com/foodtiny/native.git
$ cmake . && make -j4
$ sudo make install
$ sudo ldconfig#include <native/library.hpp>
class MainApplication {
public:
static void main(Array<String> arguments) {
HashMap<String, String> hashMap;
int counter = 0;
for (String argument : arguments) {
hashMap.put("argument " + String::valueOf(counter), argument);
counter++;
}
// Collect key value pairs
String pairs = "Pairs: \n";
for (Map<String, String>::Entry entry : hashMap.entrySet()) {
pairs += entry.getKey() + String(" - ") + entry.getValue() + String("\n");
}
System::out::println(pairs);
// Serialize to json data
ArrayList<HashMap<String, String>> arrayList;
arrayList.add(hashMap);
System::out::println(arrayList.toString());
}
};
int main(int argc, char **argv) {
MainApplication::main(argv);
return 0;
}Compile your source and link with native library
$ g++ -c -o main.o HelloWorld.cpp
$ g++ -o main main.o -lnative
$ ./main one two threeOutput:
We have 4 pairs:
argument 3 is three
argument 2 is two
argument 1 is one
argument 0 is ./main
[{"argument 0": "./main", "argument 1": "one", "argument 2": "two", "argument 3": "three"}]- This library must be followed Oracle Java 8 Documentation for standardization
- Make sure that your commits must be passed before you create pull request
- At least one contributor in this project reviews your commits (except you) before merging
- Best practices guidelines in CONTRIBUTION.md
Copyright © 2014-2016 Food Tiny. All rights reserved, except as follows. Code is released under the Apache 2.0 license. You may obtain a duplicate copy of the same license, titled CC-BY-SA-4.0, at http://creativecommons.org/licenses/by/4.0/. Terms and conditions set forth in the file LICENSE.docs.
- Example for GNU Assembly x64
- GNU Coding Style for C
- GNU Coding Style for C++
- Oracle Java 8 API Documentation
This library provides Java classes in C++ so its syntax is friendly for both programming languages but we still have some issues :
- Namespace - Package
// Java
System.out.println("Java");// C++
System::out::println("C++");- Array
// Java
byte[] byes = {};// C++
Array<byte> bytes = {};- Interface
Coming soon
- Runtime
Coming soon
- Garbage Collection
Coming soon
All data types are implemented and ready to use in C++ Application
- char - Java.Lang.Character
- byte - Java.Lang.Byte (equivalent with
unsigned char) - string - Java.Lang.String (equivalent with
char*, Java does not have data typestring) - unicode - java.lang.Character (equivalent with
wchar_t) - short - Java.Lang.Short
- int - Java.Lang.Integer
- long - Java.Lang.Long
- float - Java.Lang.Float
- double - Java.Lang.Double
- boolean - Java.Lang.Boolean (equivalent with
bool) - enum - Java.Lang.Enum
All Java packages are in transformation so we can have a general look about road map
- Java.Lang.Appendable
- Java.Lang.AutoCloseable
- Java.Lang.Boolean
- Java.Lang.Byte
- Java.Lang.Character
- Java.Lang.CharSequence
- Java.Lang.Cloneable
- Java.Lang.Comparable
- Java.Lang.Double
- Java.Lang.Enum
- Java.Lang.Error
- Java.Lang.Exception
- Java.Lang.Float
- Java.Lang.Integer
- Java.Lang.Iterable
- Java.Lang.Long
- Java.Lang.Math
- Java.Lang.Number
- Java.Lang.Object
- Java.Lang.Process
- Java.Lang.Readable
- Java.Lang.Runnable
- Java.Lang.Runtime
- Java.Lang.Short
- Java.Lang.String
- Java.Lang.System
- Java.Lang.Throwable
- Java.Lang.Thread
- Java.Lang.BufferedReader
- Java.Lang.BufferedWriter
- Java.Lang.CharArrayWriter
- Java.Lang.Console
- Java.Lang.FileDescriptor
- Java.Lang.FileFilter
- Java.Lang.FileWriter
- Java.Lang.Flushable
- Java.Lang.InputStream
- Java.Lang.IOError
- Java.Lang.IOException
- Java.Lang.ObjectInput
- Java.Lang.ObjectOutput
- Java.Lang.OutputStream
- Java.Lang.OutputStreamWriter
- Java.Lang.PipedWriter
- Java.Lang.PrintWriter
- Java.Lang.Reader
- Java.Lang.Serializable
- Java.Lang.StreamTokenizer
- Java.Lang.Writer
- Java.Util.AbstractCollection
- Java.Util.AbstractList
- Java.Util.AbstractMap
- Java.Util.AbstractSet
- Java.Util.ArrayList
- Java.Util.Arrays
- Java.Util.BitSet
- Java.Util.Base64
- Java.Util.Calendar
- Java.Util.Collection
- Java.Util.Collections
- Java.Util.Currency
- Java.Util.Date
- Java.Util.EnumMap
- Java.Util.EnumSet
- Java.Util.HashMap
- Java.Util.HashSet
- Java.Util.Iterator
- Java.Util.LinkedListHashSet
- Java.Util.LinkedList
- Java.Util.List
- Java.Util.Map
- Java.Util.Observable
- Java.Util.PriorityQueue
- Java.Util.Queue
- Java.Util.Random
- Java.Util.Scanner
- Java.Util.Set
- Java.Util.SimpleTimeZone
- Java.Util.Stack
- Java.Util.Timer
- Java.Util.TimerTask
- Java.Util.TimeZone
- Java.Util.TreeSet
- Java.Util.UUID
- Java.Util.Vector
- Java.Security.Certificate
- Java.Security.KeyFactory
- Java.Security.KeyStore
- Java.Security.MessageDigest
- Java.Net.HttpURLConnection
- Java.Net.URL
- Java.Net.URLEncoder
- Java.Net.URLDecoder
