Skip to content

tiny-express/native

Repository files navigation

Native Library

Build status Build Status Support Platform Coverage Status Documentation License Library Structure

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.

Getting started

Installation

$ git clone https://github.com/foodtiny/native.git
$ cmake . && make -j4
$ sudo make install
$ sudo ldconfig

HelloWorld.cpp

#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 three

Output:

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"}]

Contributors

  • 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 & license

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.

Useful resources

Documentation

Differences

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

Data Types

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 type string)
  • 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

Java Standard Packages

All Java packages are in transformation so we can have a general look about road map

Java.Lang
  • 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.IO
  • 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
  • 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
  • Java.Security.Certificate
  • Java.Security.KeyFactory
  • Java.Security.KeyStore
  • Java.Security.MessageDigest
Java.Net
  • Java.Net.HttpURLConnection
  • Java.Net.URL
  • Java.Net.URLEncoder
  • Java.Net.URLDecoder

About

Native Library - Brings Java productivity into C++ program

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages