1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/cxxjava-CxxJDK

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.zh_cn.md 31 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 23:10 f91d668

CxxJDK

Мощный класс библиотеки на C++ от «подпольной» JDK.

Английский вариант: English

Содержание

Особенности

  • Кроссплатформенность: поддержка Linux32/64, OSX64, Win64 и других платформ;
  • Высокая производительность: сочетает преимущества параллельных библиотек C/C++ и Java, обеспечивая высокую производительность;
  • Богатый набор классов: реализация обширной библиотеки классов JDK, позволяя избавиться от ограничений бедных библиотек C++;
  • Простота разработки: сначала разработка на Java, затем использование CxxJDK для перевода, это просто!

Примеры

Java:

public static void main(String[] args) {
    class Worker implements Runnable {

        @Override
        public void run() {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(String.format("thread %d finished", 
                this.hashCode()));
        }
    }

    ThreadPoolExecutor executor = new ThreadPoolExecutor(100, 200, 10, 
            TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());   
    executor.allowCoreThreadTimeOut(true);
    
    for (int i = 0; i < 200; i++) {   
        executor.execute(new Worker());   
    }
    
    executor.shutdown();
}

C++:

int main(int argc, const char **argv) {
    ESystem::init(argc, argv); //инициализация cxxjdk!

    class Worker : public ERunnable {
    public:
        virtual void run() {
            try {   
                EThread::sleep(1000);   
            } catch (EInterruptedException& e) {   
                e.printStackTrace();   
            }   
            ESystem::out->println(EString::formatOf("thread %d finished", 
                this->hashCode()).c_str());
        };
    };

    EThreadPoolExecutor* executor = new EThreadPoolExecutor(100, 200, 10,
            ETimeUnit::SECONDS, new ELinkedBlockingQueue<ERunnable>());
    executor->allowCoreThreadTimeOut(true);
    
    for (int i = 0; i < 200; i++) {
        executor->execute(new Worker());
    }
    
    executor->shutdown();
    executor->awaitTermination();
    
    delete executor; //освобождение ресурсов объекта!
}

Достаточно ли привлекателен этот пример?

Дополнительные примеры:
testefc.cpp
testnio.cpp
testbson.cpp
testc11.cpp
testssl.cpp

Производительность

Тест EConcurrentHashmap:

Программное окружение:

put 20 потоков && get 20 потоков

Аппаратное окружение:

Название модели: MacBook Pro
Идентификационный номер модели: MacBookPro10,2
Имя процессора: Intel Core i5
Скорость процессора: 2,6 ГГц
Количество процессоров: 1
Общее количество ядер: 2

Результаты теста:

test_concurrentHashmap

Характеристики

base:
jdk класс cxxjdk класс
Object[] EA
AbstractCollection EAbstractCollection
AbstractList EAbstractList
AbstractMap EAbstractMap
AbstractQueue EAbstractQueue
AbstractSet EAbstractSet
AlreadyBoundException EAlreadyBoundException
ArithmeticException EArithmeticException
Array EArray
ArrayDeque EArrayDeque
ArrayList EArrayList
Arrays EArrays
AuthenticationException EAuthenticationException
Base64 EBase64
BigDecimal EBigDecimal
BigInteger EBigInteger
--------------------------------- ---------------------------------
ByteArrayInputStream ЭByteArrayInputStream
ByteArrayOutputStream ЭByteArrayOutputStream
CRC32 ЭCRC32
Календарь ЭКалендарь
Символ ЭСимвол
CheckedInputStream ЭCheckedInputStream
Контрольная сумма ЭКонтрольная сумма
ClassCastException ЭClassCastException
Коллекция ЭКоллекция
Коллекции ЭКоллекции
Сравнимый ЭСравнимый
Компаратор ЭКомпаратор
Условие ЭУсловие
ConnectException ЭConnectException
DataFormatException ЭDataFormatException
DatagramPacket ЭDatagramPacket
DatagramSocket ЭDatagramSocket
Ввод данных ЭВвод данных
DataInputStream ЭDataInputStream
Вывод данных ЭВывод данных
DataOutputStream ЭDataOutputStream
Дата ЭДата
Deflater ЭDeflater
DeflaterOutputStream ЭDeflaterOutputStream
Deque ЭDeque
Словарь ЭСловарь
Двойной ЭДвойной
EOFException ЭEOFException
EmptyStackException ЭEmptyStackException
Перечисление ЭПеречисление
EventListener ЭEventListener
EventListenerProxy ЭEventListenerProxy
Объект события ЭОбъект события
Исключение ЭИсключение
Файл ЭФайл
FileInputStream ЭFileInputStream
FileNotFoundException ЭFileNotFoundException
FileOutputStream ЭFileOutputStream
Фильтр имени файла ЭФильтр имени файла
FilterInputStream ЭFilterInputStream
FilterOutputStream ЭFilterOutputStream
Плавающий ЭПлавающий
GZIPInputStream ЭGZIPInputStream
GZIPOutputStream ЭGZIPOutputStream
HashMap ЭHashMap
HashSet ЭHashSet
IOException ЭIOException
IPAddressUtil ЭIPAddressUtil
IdentityHashMap ЭIdentityHashMap
IllegalArgumentException ЭIllegalArgumentException
IllegalStateException ЭIllegalStateException
IllegalThreadStateException ЭIllegalThreadStateException
IndexOutOfBoundsException ЭIndexOutOfBoundsException
InetAddress ЭInetAddress
InetSocketAddress ЭInetSocketAddress
Inflater ЭInflater
------------------------------------
InputStream Поток ввода
Integer Целое число
InterfaceAddress Адрес интерфейса
InterruptedException Прерывание потока
InterruptedIOException Прерванное исключение ввода-вывода
Interruptible Прерываемый
Iterable Итерируемый
Iterator Итератор
LLong Длинное целое
LinkedList Связанный список
List Список
ListIterator Итератор списка
Lock Блокировка
MalformedURLException Некорректный URL
Map Карта
MatchResult Результат сопоставления
Matcher Сопоставитель
Math Математика
MulticastSocket Многоадресный сокет
NavigableMap Навигационная карта
NavigableSet Навигационное множество
NetworkInterface Сетевой интерфейс
NoRouteToHostException Нет маршрута к хосту
NoSuchElementException Элемент не найден
NotYetBoundException Ещё не связан
NullPointerException Исключение нулевого указателя
Number Число
NumberFormatException Исключение формата числа
Object Объект
Observable Наблюдаемый объект
Observer Наблюдатель
OutOfMemoryError Ошибка нехватки памяти
OutputStream Поток вывода
Pattern Шаблон
PatternSyntaxException Синтаксическая ошибка шаблона
PipedInputStream Канал ввода
PipedOutputStream Канал вывода
PortUnreachableException Порт недоступен
PrintStream Печатающий поток
PriorityQueue Очередь с приоритетом
Process Процесс
ProtocolException Исключение протокола
Queue Очередь
Random Случайное число
RandomAccessFile Файл произвольного доступа
Reference Ссылка
Runnable Выполняемый
Runtime Время выполнения
RuntimeException Исключение времени выполнения
SaslException Исключение SASL
SecureRandom Безопасный генератор случайных чисел
SecurityException Исключительная ситуация безопасности
Sentry Часовой
SequenceInputStream Потоковый вход последовательности
ServerSocket Сервер сокета
Set Множество
Short Короткое целое
Socket ESocket
SocketException ESocketException
SocketOptions ESocketOptions
SocketTimeoutException ESocketTimeoutException
SortedMap ESortedMap
SortedSet ESortedSet
Stack EStack
String EString
StringTokenizer EStringTokenizer
System ESystem
Thread EThread
ThreadGroup EThreadGroup
ThreadLocal EThreadLocal
ThreadLocalStorage EThreadLocalStorage
Throwable EThrowable
TimeUnit ETimeUnit
Timer ETimer
TimerTask ETimerTask
TreeMap ETreeMap
TreeSet ETreeSet
URI EURI
URISyntaxException EURISyntaxException
URLDecoder EURLDecoder
URLEncoder EURLEncoder
URLString EURLString
UnknownHostException EUnknownHostException
UnknownServiceException EUnknownServiceException
UnsupportedAddressTypeException EUnsupportedAddressTypeException
UnsupportedEncodingException EUnsupportedEncodingException
UnsupportedOperationException EUnsupportedOperationException
Vector EVector
try {xxx} finally {yyy} ON_FINALLY_NOTHROW(yyy) {xxx}}
concurrent:
jdk класс cxxjdk класс
synchronized SYNCHRONIZED
AbstractConcurrentCollection EAbstractConcurrentCollection
AbstractConcurrentQueue EAbstractConcurrentQueue
AbstractExecutorService EAbstractExecutorService
AbstractOwnableSynchronizer EAbstractOwnableSynchronizer
AbstractQueuedSynchronizer EAbstractQueuedSynchronizer
AtomicBoolean EAtomicBoolean
AtomicCounter EAtomicCounter
AtomicInteger EAtomicInteger
AtomicLLong EAtomicLLong
AtomicReference EAtomicReference
BlockingQueue EBlockingQueue
BrokenBarrierException EBrokenBarrierException
Callable ECallable
CancellationException ECancellationException
CompletionService ECompletionService
ConcurrentHashMap EConcurrentHashMap
ConcurrentLinkedQueue EConcurrentLinkedQueue
ConcurrentModificationException EConcurrentModificationException
ConcurrentNavigableMap EConcurrentNavigableMap
ConcurrentSkipListMap EConcurrentSkipListMap
CopyOnWriteArrayList ECopyOnWriteArrayList
CountDownLatch ECountDownLatch
CyclicBarrier ECyclicBarrier
-------------------------------------- ------------------------------------
Иксекутионэксепшн Эиксекутионэксепшн
Экьютор Эйэкьютор
Экьюторкомплетионсервис Эйэкьюторкомплетион сервис
Экьюторсервис Эйэкьютор сервис
Экьюторы Эйэкьюторы
Фьючер Эфьючер
Фьючертаск Эфьючертаск
Линкедблокенгкью Элинкед блокенг кью
Линкедтрансферкью Элинкедтрансфер кью
Локсаппорт Эл оукс саппорт
Ридвайтрелок Эр и д вайтре лок
Реэнтрантлок Эр энтрант лок
Реэнтрантреадватрелок Эр энтрантреадватер лок
Рджектедекстрионэксепшн Эр джекетедекстрион эксепшн
Рджекетедекстрионхэндлер Эр джекетедекстрион хендлер
Раннаблфьючер Эр раннабл фьючер
Семафор Эсемафор
Синкронкускью Эсинхронкус кью
Тиредфактори Эт тиред фактори
Тредлокаланрандом Эт тред локалан рандом
Пулэкзекутор Эпул экзекутор
Тайм аут эксепшн Этайм аут эксепшн
Трансферкью Этрансфер кью
Унсейф Энсейф
Мап Эм конкрент мап
Сортедмап Эм конкрент сортед мап
nio:
jdk класс cxxjdk класс
Олреадиконнектедекстионэксепшн Эолреадиконнектдекстион эксепшн
Асинхронкус клоуз эксепшн Эасинхронкусклоуз эксепшн
Баффер оверфлоу эксепшн Эбаффер овер флоу эксепшн
Баффер андерфлоу эксепшн Эбаффер андер флоу эксепшн
Байтенканал Эй байтен канал
Канселкей эксепшн Эк анселкей эксепшн
Канал Эй канал
Чаннел инпутстриам Эй чаннел инпут стриам
Клозденбайинтеррупт эксепшн Эклозден бай интер рупт эксепшн
Клозд канал эксепшн Эклозд канал эксепшн
Клозд селектор эксепшн Эклозд селектор эксепшн
Коннекшен пендинг эксепшн Эк коннешен пендинг эксепшн
Датаграмм канал Эд датаграмм канал
Файл канал Эй файл канал
Файл лок Эй файл лок
Икс байтен буфер Эй икс байтен буффер
Иллегаль блокинг мод эксепшн Эиллегаль блокинг мод эксепшн
Интерруптибл канал Эй интерруптибл канал
Инвалид марк эксепшн Эинвалид марк эксепшн
Маппед байтен буфер Эм мапед байтен буффер
Мембершип кей Эм мембершип кей
Мултикаст канал Эм мултикаст канал
Нэйтив тред сэт Энэйтив тред сэт
Но коннекшен пендинг эксепшн Эн но коннекшен пендинг эксепшн
Норреадабл канал эксепшн Эн норреадабл канал эксепшн
Нор виртибл канал эксепшн Эн нор виртибл канал эксепшн
Наует коннектедекстион эксепшн Эн наует коннекте декстион эксепшн
Оверлаппинг файл лок эксепшн Эоверлаппинг файл лок эксепшн
Реадабл буфер эксепшн Эр реадабл буфер эксепшн
Селектабл канал Эс селектабл канал
Секлекшн кей Эс секлекшн кей
-------------------------------
ServerSocketChannel EServerSocketChannel
SocketChannel ESocketChannel
UnresolvedAddressException EUnresolvedAddressException
other:
cxxjdk类 类描述
EConfig 应用配置管理
EByteBuffer 二进制数据缓存
ESharedPtr C++智能指针
ELockPool SpinLock池化管理类
EOrderAccess 内存访问模型辅助类
EFork Создание процесса в Unix/Linux системе
ESimpleCondition Условие в стиле C++
ESimpleLock Мьютекс-блокировка в стиле C++
ESpinLock Оболочка для спин-блокировки в C++
ESimpleMap Оболочка таблицы map в C++
ESimpleStack Оболочка стека в C++
ESimpleVector Оболочка вектора в C++
ESimpleEnumeration Перечисление для ESimpleXXX
EStream Класс для работы с потоками ввода-вывода
EOS Классы, связанные с операционной системой
EAtomic Классы для атомарных операций
EScopeGuard Вспомогательный класс для управления ресурсами через локальные переменные и деструкторы в стиле C++11
EAtomicDouble Класс для атомарной работы с double
ENetWrapper Вспомогательные инструменты для работы с сокетами
EDomainSocket Сокет Unix Domain
EDomainServerSocket Сервер сокетов Unix Domain

手册

详见 Guide文档

TODO

java.security.*;

Support

Email: cxxjava@163.com

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/cxxjava-CxxJDK.git
git@api.gitlife.ru:oschina-mirror/cxxjava-CxxJDK.git
oschina-mirror
cxxjava-CxxJDK
cxxjava-CxxJDK
master