IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

Créer sa propre API et protéger certaines classes


Sujet :

API standards et tierces Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 26
    Points : 19
    Points
    19
    Par défaut Créer sa propre API et protéger certaines classes
    Bonjour,

    Je suis en train de créer une API que je dois fournir à des clients.

    Il y a certaines classes de cette API que je souhaiterais cacher à ceux qui l'utiliseront j'ai donc mis une visibilité package à ces classes.

    Malheureusement, je me rends compte que quand j'utilise le même nom de package que celui de l'API pour accéder à celui-ci j'ai accès à toutes les classes que je souhaitais cacher.

    Existe-t-il une possibilité de protéger cela ou ce n'est pas possible ?

    Merci beaucoup de votre réponse

  2. #2
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 571
    Points : 15 538
    Points
    15 538
    Par défaut
    Non c'est le principe de la visibilité package d'être visible depuis les fichiers du même paquage.

    Normalement une API ne devrait pas se trouver dans le même package que l'application qui l'utilise. Le nom de pacquage doit être choisi de manière judicieuse pour éviter des colisions de nom involontaires. De plus pour ne pas encourager cela il faut éviter de générer la documentation de l'API sur les élément de visibilité private et package.

    Un programmeur pas trop bête sait qu'il est censé laisser une API dans son propre package et ne pas programmer dedans. S'il le fait c'est en connaissance de cause.

  3. #3
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par Uther Voir le message
    Le nom de pacquage doit être choisi de manière judicieuse pour éviter des colisions de nom involontaires.

    malheureusement c'est pas toujours le cas pour les pacquages standards

  4. #4
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 571
    Points : 15 538
    Points
    15 538
    Par défaut
    Normalement les noms de pacquage de l'api java sont bien définis, dans java et javax, ou en utilisant des nom de domaines inversés, donc il n'y a pas d'ambiguité possible.

    Si tes programmes sont dans des pacquages java.xxx ou javax.xxx, il faut vraiment vouloir se chercher des emmerdes.

    En général utiliser le système des noms de dommaine inversé pour les paquage permet de manière assez sure d'éviter le genre de problème dont parle patou21. Si l'utilisateur de l'API utilise un nom de domaine qui n'est pas le sien comme nom de pacquage, c'est qu'il fait ça en connaissance de cause.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    précision qui a son importance. Quand on parle de visibilité "private" ou "protected", ca s'entends au niveau du design de l'application et des règles du language. Ca n'a rien a voir avec un protection contre la copie ou le piratage ou avec la sécurité. Il est toujours possible de contourner la limitation, par exemple, en créant des classes intermédiare dans le meme package qui exposent les données protégées. Mais comme si bien dit, le programmeur le fait alors en connaissance de cause.

  6. #6
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    je pense que l'utilisation des mots clé "private" ,"public".. et la gestion de visibilité en général n'a un sens que lors de developpoment des composant java beans REUTILISABLE.

  7. #7
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 571
    Points : 15 538
    Points
    15 538
    Par défaut
    Réduire la visibilité est certes indispensable quand on a des composant dont juste une partie doit être accessible a l'utilisateur final.
    Mais quand un projet grossi et/ou est manipulé par de nombreuses personnes, il devient important de travailler avec de objets ayant des règles claires, même s'il n'ont pas pour vocation d'être réutilisables. Si tous les champs d'un objet peuvent être modifiés sans contraintes par n'importe quelle classe, on risque de finir avec des comportements inattendus.

  8. #8
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    je rajoute bien évidemment

    Citation Envoyé par Uther Voir le message
    et quand un projet grossi et/ou est manipulé par de nombreuses personnes.

  9. #9
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Il y a aussi la possibilité de scellé les package de ton jar.
    Pour cela il faut rajouter pour chacun de tes packages les lignes suivantes dans le manifest (avec une ligne vide avant et après) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Name: com/tonpackage/
    Sealed: true
    La JVM vérifiera alors que toutes les classes du packages com.tonpackage viennent bien du même fichier *.jar, et génèrera une erreur si ce n'est pas le cas...


    a++

Discussions similaires

  1. Créer ma propre API
    Par Miclol dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 11/04/2011, 12h30
  2. Réponses: 1
    Dernier message: 12/07/2009, 09h51
  3. Créer ses propres classes génériques
    Par Louis-Guillaume Morand dans le forum C#
    Réponses: 6
    Dernier message: 22/05/2009, 16h57
  4. [E-03] Créer ses propres objets / classes
    Par NikoBe dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/03/2009, 13h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo