Apprendre des concepts Java avancés, des techniques, des frameworks, des composants internes, etc. pour a.Net dev dans le contexte du développement Android?


Je travaille avec.Net professionnellement dans de nombreux contextes différents, il est donc facile pour moi de lire sur les nouveaux frameworks, les composants internes d'exécution, les techniques/conceptions avancées et de les utiliser et de les comprendre. Dans le monde Java, j'ai une expérience limitée et je ne travaille vraiment que pour le développement Android de nos jours. J'ai pu apprendre assez bien le langage pour développer les fonctionnalités que je recherche, mais je veux en savoir plus sur les bonnes pratiques et la conception que le Java les gars sont d'accord sur, quels que soient les frameworks modernes que tout le monde utilise, et plus sur les internes de la machine virtuelle et comment mes choix de programmation affectent la façon dont mon code est compilé et exécuté.

Des exemples du monde. Net de ce que je recherche sont

  1. Il y a une série de livres appelés C# efficace qui décrit 50 éléments par livre de changements subtils à votre style de programmation et comment ils rendront votre code plus propre et plus performant dans des scénarios spécifiques.
  2. Entity Framework est un framework de Microsoft pour se connecter directement à une source de données et créer automatiquement un modèle d'entité configurable
  3. Managed Extensibility Framework est un nouveau framework de Microsoft pour écrire des applications extensibles et des bibliothèques enfichables en exposant des points d'extension aux deux extrémités
  4. Il existe une documentation à gogo sur Internet sur le fonctionnement du garbage collector. Net et sur la manière dont vos choix de programmation affectent la manière dont cela interagit avec votre demandes

Quels types de ressources, de livres, de tutoriels et de frameworks existent comme celui-ci dans le monde Java?

Author: Rich, 2010-06-29

1 answers

Il y a aussi un livre appelé Effective Java.

Il existe différentes catégories de liaison de données en Java. Les plus avancés sont les modèles objets, comme JDO, JPA, etc. Ils utilisent essentiellement une carte pour déplacer les données des objets vers les tables, et vous ne touchez jamais directement la base de données car tout est géré de manière transparente. Une autre est la technique typique "object binds to a row", dont JDO est un bon exemple. Enfin, il y a la gestion de la base de données directement, que vous utilisez JDBC. Utilisez l'outil le plus approprié à votre logique de code.

En général, vous constaterez qu'avec Java, ce n'est pas un environnement "une seule solution". Certains des problèmes ont été résolus plusieurs fois de différentes manières pour obtenir des résultats différents.

Il semble que "Managed Extensibility Framework" soit une copie subtile du concept de serveur J2EE. J2EE a subi au moins trois révisions majeures au cours de la dernière décennie. Si vous souhaitez utiliser J2EE, n'oubliez pas qu'il fournit des services aux éléments dans les wrappers appelés "conteneur". Cela signifie que vous devrez adapter votre code pour répondre aux accords de service de conteneurs. Il y a un peu d'apprentissage initial impliqué, mais une fois que vous comprenez l'environnement, ce n'est pas difficile. Vous n'avez pas non plus besoin d'utiliser l'ensemble de l'environnement J2EE et vous pouvez intégrer vos propres solutions à celles fournies par le serveur J2EE. C'est un arrangement de type pick and choose, peu précieux est forcé sur vous.

J2EE décrit également beaucoup de technologies d'entreprise qui peuvent vivre indépendamment d'un serveur J2EE, donc si vous n'aimez pas l'environnement J2EE (pour une raison quelconque), vous pouvez toujours inclure les fichiers JAR et utiliser les bibliothèques sans le serveur J2EE.

Certaines personnes ont décidé que les serveurs J2EE initiaux étaient trop restrictifs, vous avez donc un serveur presque-J2EE appelé Spring. Les conteneurs Web J2EE sont arrivés assez tôt sur la scène en Java, vous pouvez donc obtenir des serveurs "conteneur Web uniquement", comme Tomcat ou Jetty.

Avec Java, il y a probablement même plus de documentation sur le garbage collector, mais vous devez moins gérer son comportement. Le garbage collector de Java est généralement beaucoup mieux comporté, et il n'a pas à gérer le support des pointeurs, ce qui fait partiellement du garbage collector de.net quelque chose que vous devez avoir tendance à faire de temps en temps.

Cela dit, déréférencer tout ce que vous voulez collecté. Si la logique stocke des éléments dans un HashMap en tant que cache, envisagez d'utiliser SoftReferences, qui ne seront pas considérées comme des références dans la collecte des ordures. Java ne compte pas de référence, alors ne vous inquiétez pas des références circulaires, vous pouvez déréférencer un cycle de références et elles seront toutes collectées.

L'algorithme utilisé par le GC change en fonction de la disponibilité de la mémoire. Dans les situations de faible utilisation de la mémoire, il copiera les objets en direct sur une nouvelle page et libérera l'ancienne page (le compactage est donc obtenu presque gratuitement. Dans les situations de mémoire plus élevée, il utilise une marque, un balayage et un cycle compact typiques des autres déchets collecteur. Il met également en scène sa mémoire dans trois segments générationnels pour ordonner les objets selon la fréquence à laquelle ils doivent être vérifiés pour leur utilisation dans le programme en cours d'exécution.

Tout cela dit, le vrai kicker est qu'Android utilise le langage Java, mais il n'exécute pas de JVM. Il exécute un "je-ne-crois-c'est-pas-Java!"JVM-fonctionne de la même manière qui apporte des modifications importantes au chargeur de classe et au format de fichier de classe. Cela signifie que vous devez apprendre comment la machine virtuelle Davlik fonctionne et diffère de la JVM.

Amusez-vous! Il y a beaucoup plus de choix dans Java land auquel vous êtes probablement habitué; cependant, la plupart des outils Java les plus populaires ont été portés sur.net land, vous ne trouverez donc pas tout le paysage étranger.

 5
Author: Edwin Buck, 2010-06-29 13:28:46