10
votes

Java équivalent de C ++ .dll?

Donc, je suis programmée depuis un moment maintenant, mais depuis que je n'ai pas travaillé sur de nombreux projets modulaires plus grands, je n'ai pas rencontré ce problème auparavant.

Je sais ce qu'Andll est en C ++ et comment ils sont utilisés. Mais chaque fois que j'ai vu des choses similaires dans Java, ils ont toujours été emballés avec le code source. Par exemple, que ferais-je si je voulais donner une bibliothèque Java à quelqu'un d'autre, mais n'expose pas le code source? Au lieu de la source, je voudrais juste donner une bibliothèque ainsi qu'un Javadoc, ou quelque chose du long de ces lignes, avec les méthodes / fonctions publiques, à un autre programmeur qui pourrait ensuite les mettre en œuvre dans leur propre code Java.

Par exemple, si je voulais créer un analyseur saxe qui pourrait être "emprunté" par un autre programmeur, mais (pour une raison quelconque - ne peut penser à un dans cet exemple spécifique lol) je ne veux pas exposer ma source. Peut-être qu'il y a une connexion impliquée que je ne veux pas exploiter - je ne sais pas.

Mais quelle serait la façon Java de faire cela? Avec C ++, les fichiers .dll rendent beaucoup plus facile, mais je n'ai jamais rencontré un équivalent Java jusqu'à présent. (Je suis plutôt nouveau à Java, et un joli nouveau programmeur "réel", en général aussi)


3 commentaires

Tout Java peut être déséquilibré très facilement, donc si vous intégrez des mots de passe, vous ne les cachez pas vraiment de quiconque qui veut vraiment les connaître.


Matt, note qu'un .dll n'est pas "en C ++", il s'agit d'une chose Windows, qui peut être créée à partir de plusieurs langues différentes. L'équivalent UNIX / Linux est un .so (objet partagé).


Votre titre ne correspond pas à votre commentaire ... Simple a un pot source et un jar de code. Mais, comme les autres personnes ont souligné que vous pouvez obscurcir le code si vous ne voulez pas que les gens le lisent, c'est une douleur pour les autres personnes utilisant votre bibliothèque, car elles auraient besoin des mappages afin de pouvoir compiler et l'obfuscator. Une DLL est une bibliothèque partagée sur plusieurs programmes qu'un JAR est une bibliothèque partagée d'un programme (nouvel instance par programme)


10 Réponses :


0
votes

Vous pouvez publier une collection de fichiers compilés * .class.


0 commentaires

5
votes

fichiers Google JAR.

Edit: Wikipedia résume bien: http://en.wikipedia.org/ wiki / jar_% 28file_format% 29

Les développeurs de logiciels utilisent généralement des fichiers .jar pour distribuer des applications ou des bibliothèques Java ...


1 commentaires

Merci beaucoup. J'étais au courant des applications complètes pourraient être distribuées dans les fichiers .jar, mais je ne me suis pas réalisé qu'ils pourraient aussi servir de bibliothèques.



24
votes

Java .jar La bibliothèque est l'équivalent Java de .dll, et il a aussi "JAR Hell", quelle est la version Java de "dll Hell"

http://fr.wikipedia.org/wiki/jar_ (fichier_format)


2 commentaires

Merci pour l'info. JAR HELL / DLL L'enfer ne sont pas des choses que j'avais vécues, alors je vais certainement les prendre en compte à l'avenir!


En fait, les fichiers JAR de @Mattd sont chargés par programme où les fichiers DLL, je crois, partagez une mémoire sur tous les programmes. Je cherchais cela comme un moyen de sauvegarder la mémoire pour utiliser plusieurs applications Java avec les mêmes bibliothèques.



2
votes

L'analogue Java à une DLL est le fichier .jar, qui est un fichier zip contenant une bande de fichiers Java .Class et (peut-être) d'autres ressources. Voir Sun, Er, Oracle's Documentation .


0 commentaires

0
votes

Le moyen le plus courant de coller le code Java consiste à utiliser un fichier ".jar". Un fichier .jar est essentiellement juste un fichier .zip.

Pour distribuer juste votre code compilé, vous souhaiterez créer un .jar contenant vos fichiers .Class. Si vous souhaitez également distribuer le code source, vous pouvez inclure les fichiers .java dans une zone séparée du .jar.

Il y a beaucoup d'outils et de didacticiels qui expliquent comment construire un .jar.


0 commentaires

-1
votes

Vous n'avez pas à distribuer votre code source. Vous pouvez distribuer des fichiers compilés .Class , qui contiennent du bypode maladable-illisible. Vous pouvez les incliner dans les fichiers .jar , qui ne sont que des fichiers zip et sont d'environ Java équivalent de fichiers natifs .dll.

REMARQUE TAHT .CLASS Les fichiers peuvent être facilement décompilés (bien que les décompileurs ne puissent pas récupérer 100% des informations provenant de sources). Pour rendre la décompilation plus difficile, vous pouvez utiliser Obfuscator pour rendre les sources beaucoup moins lisibles.


2 commentaires

Bytecode est très lisible par l'homme, si vous avez un programme qui peut le lire ... Heck, ASCII n'est pas lisible par l'homme, sauf si vous avez un programme qui peut le lire!


Bon point. Les lecteurs ASCII sont cependant beaucoup plus communs que Java Decompilers.



4
votes

Un pot n'est qu'un zip non compressé de vos classes. Toutes les classes peuvent être facilement décompilées et visualisées. Si vous ne voulez vraiment pas partager votre code, vous voudrez peut-être regarder l'obscurcissement de votre code.


0 commentaires

0
votes

Techniquement, vous pouvez compiler Java Bytecode jusqu'au code natif et créer une DLL conventionnelle ou une bibliothèque partagée à l'aide d'un compilateur à l'avance .

Cependant, cette DLL aurait besoin de l'exécution Java spécifique au compilateur AOT et que deux runtimes Java ne peuvent pas coexister dans un processus. En outre, il faudrait employer JNI pour utiliser toute utilisation de cette dll.

Malheureusement, Obfuscation a trop de faiblesses < / forte> ...


0 commentaires

1
votes

Le simple moto de Java 'écrit une fois, courir n'importe où'. Créez vos classes toutes les classes Java en tant que fichier JAR, mais il existe des possibilités que quelqu'un peut toujours voir le code Java en utilisant des décompileurs. Pour empêcher que quelqu'un examine vraiment votre code, puis obfusez le pot en utilisant le lien ci-dessous.

Java Obfuscation


0 commentaires

0
votes

Votre titre ne correspond pas à votre commentaire ....

Simple a un pot source et un jar de code. Mais, comme l'a souligné d'autres personnes, vous pouvez empêcher le code si vous ne voulez pas que les gens le lisent, c'est une douleur pour les autres personnes utilisant votre bibliothèque, car elles auraient besoin des mappages afin de pouvoir compiler et l'obfuscator. P>

A dll is a shared library (from what I read gets instantiated one time across multiple processes)
A jar is a shared library (code gets instantiated per process from the same file)


0 commentaires