Question

J'ai un outil de migration de base de données Java open source ( http://www.liquibase.org ) que je envisage de porter sur .Net.

La majeure partie de l'outil (du moins du point de vue de la complexité) concerne une logique du type "si vous ajoutez une clé primaire et que la base de données Oracle utilise ce code SQL. Si la base de données est MySQL, utilisez ce SQL. Si la clé primaire est nommée et que la base de données est Postgres, utilisez ce SQL ".

Je pourrais bifurquer la base de code Java et la convertir (manuellement et / ou automatiquement), mais à mesure que des mises à jour et des corrections de bogues de la logique ci-dessus entrent en jeu, je ne souhaite pas l'appliquer aux deux versions. Ce que je voudrais faire est de déplacer toute cette logique dans un formulaire pouvant être compilé et utilisé naïvement par les versions Java et .Net.

Le code que je cherche à convertir ne contient aucune utilisation de bibliothèque avancée (JDBC, System.out, etc.) pouvant varier considérablement de Java à .Net. Je ne pense donc pas que cela posera problème (au pire il peut être conçu autour).

Donc, ce que je recherche, c'est:

  • Un langage dans lequel je peux coder des parties communes de mon application et le compiler en classes utilisables par le paramètre "standard". langues sur la plate-forme cible
  • N'ajoute aucune exigence d'exécution au système
  • Rien donc si étrange que cela effraie les contributeurs potentiels

Je sais que Python et Ruby ont tous deux des implémentations pour la JVM et le CLR. Dans quelle mesure répondent-ils à mes exigences? Quelqu'un a-t-il réussi (ou pas réussi) à utiliser cette technique pour des applications multiplates-formes? Y a-t-il des pièges dont je dois m'inquiéter?

Était-ce utile?

La solution

Découvrez le langage de programmation Fantom . Il a sa propre syntaxe semblable à Java / C # mais peut cibler la machine virtuelle Java ou le CLR .NET.

Leur page "Pourquoi Fantom" donne une vue d'ensemble de leur approche de la portabilité par rapport aux langages dynamiques fonctionnant sur une machine virtuelle.

Autres conseils

Vous pourriez avoir un peu de chance en utilisant IKVM.NET . Je ne suis pas sûr de son statut exact, mais cela vaut la peine d'essayer si vous insistez pour exécuter du code Java sur le .NET Framework. Il inclut une implémentation .NET de la bibliothèque de classes de base Java, il semble donc assez complet.

La seule autre option que je puisse suggérer consiste à porter le code dans le langage J # , un langage .NET complet (mais pas de première classe en ce sens que C # ou VB.NET est). Le langage a été conçu pour que les différences avec Java soient minimes.

Si vous songez à une approche intégrée, vous pouvez regarder Lua.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top