Java Equivalent из С++.dll?

Итак, я программировал какое-то время, но так как я не работал над многими более крупными модульными проектами, я раньше не сталкивался с этой проблемой.

Я знаю, что .dll на С++ и как они используются. Но каждый раз, когда я видел подобные вещи на Java, они всегда были упакованы с исходным кодом. Например, что бы я сделал, если бы хотел предоставить библиотеку Java кому-то еще, но не раскрывать исходный код? Вместо источника я просто предоставил библиотеку, а также Javadoc или что-то в этом роде с помощью общедоступных методов/функций другому программисту, который мог бы реализовать их в своем собственном Java-коде.

Например, если бы я хотел создать SAX-парсер, который мог бы быть "заимствован" другим программистом, но (по какой-то причине - не может думать об одном в этом конкретном примере lol), я не хочу раскрывать мой источник. Может быть, есть вход в систему, который я не хочу использовать, - я не знаю.

Но каков был бы способ Java для этого? С С++, DLL файлы делают это намного проще, но до сих пор я никогда не сталкивался с эквивалентом Java. (Я новичок в Java, и довольно новый "реальный" программист вообще)

Ответ 2

Файлы JAR Google.

Редактировать: Wikipedia прекрасно понимает: http://en.wikipedia.org/wiki/JAR_%28file_format%29

Разработчики программного обеспечения обычно используют файлы .jar для распространения приложений или библиотек Java...

Ответ 3

Банку просто несжатый zip ваших классов. Все классы можно легко декомпилировать и просмотреть. Если вы действительно не хотите делиться своим кодом, вам может потребоваться обфускация вашего кода.

Ответ 4

Java-аналог DLL - это .jar файл, который представляет собой zip файл, содержащий кучу файлов Java.class и (возможно) других ресурсов. См. Sun, er, Oracle документация.

Ответ 5

Java simple moto 'Write Once, Run where'. создайте все java-классы как jar файл, но есть возможности, которые все еще могут увидеть код Java с помощью Decompilers. Чтобы кто-то действительно не смотрел на ваш код, затем обфускайте банку, используя приведенную ниже ссылку.

Java Obfuscation

Ответ 6

Вы можете опубликовать коллекцию скомпилированных файлов *.class.

Ответ 7

Наиболее распространенным способом пакетного Java-кода является использование файла .jar. Файл .jar в основном представляет собой только файл .zip.

Чтобы распространять только ваш скомпилированный код, вы захотите создать .jar, содержащий ваши .class файлы. Если вы хотите дополнительно распространять исходный код, вы можете включить файлы .java в отдельную область .jar.

Есть много инструментов и руководств, которые объясняют, как создать .jar.

Ответ 8

Технически вы можете скомпилировать байт-код Java с помощью собственного кода и создать обычную DLL или общую библиотеку, используя компилятор Ahead-Of-Time.

Однако для этой DLL потребуется время выполнения Java, специфичное для компилятора AOT, и два Java-режима работы могут не сосуществовать в одном процессе. Кроме того, нужно было бы использовать JNI, чтобы использовать эту DLL.

К сожалению, обфускация имеет слишком много слабых сторон...

Ответ 9

Вам не нужно распространять исходный код. Вы можете распространять скомпилированные файлы .class, содержащие человеко-нечитаемый байт-код. Вы можете связать их с .jar файлами, которые являются только zip файлами и примерно эквивалентны Java файлам с родными .dll.

Примечание. taht .class файлы могут быть легко декомпилированы (хотя декомпиляторы не могут восстановить 100% информации из источников). Чтобы сделать декомпиляцию более сложной, вы можете использовать обфускатор, чтобы сделать источники гораздо менее разборчивыми.