J'ai un projet dont le domaine principal change radicalement. Il est possible d'utiliser 50% de la fonctionnalité essentielle de ce site et d'ajouter simplement la nouvelle fonctionnalité de 50%, mais je commence à considérer que cela pourrait être plus rapide de simplement refaire le produit dans les rails. La vitesse de développement est très importante. P>
Il y a des choses que j'aime vraiment sur Java - la performance et l'évolutivité sont très bonnes. Je ne suis pas un développeur Java de merde, alors mes applications ont tendance à courir très bien - mieux que les sites de rails que j'ai vus. J'ai toujours accepté l'idée que les gens viennent probablement de jeter un peu plus d'argent au problème lorsqu'il s'agit d'utiliser des rails, ce qui se passe probablement à la fin à la fin des prestations de productivité insensée. P>
Je suis en fait assez agile avec Java. Je sais que cela me prendra encore plus longtemps pour ajouter une entité de base au système, mais je suis rapide à cela et ça ne me dérange pas que beaucoup. Au moins c'est facile et droit à faire. P>
Qu'est-ce que je pense, c'est: p>
Il y a quelques choses que j'aime à propos de Java. L'accès à un rôle est très facile à voir avec la sécurité du printemps. L'authentification n'est jamais si importante d'un gain, mais j'aime la mise en œuvre à l'intérieur du printemps. P>
J'aime aussi les objets de soutien de la forme du ressort et @modelattribute. Ce sont des gains énormes en ce qui concerne les contrôleurs, et je ne sais pas si les rails peuvent faire ces choses. Honnêtement, je n'ai jamais aimé passer des paramètres de demande dans chaque action - le printemps MVC est en fait beaucoup plus facile à utiliser lorsqu'il s'agit de ce gonfleur commun. P>
Être capable de mettre en cache des structures vraiment massives en mémoire et de les faire rester en mémoire lorsque vous démarrez que l'application est également très souhaitable, en particulier pour cette application en fait. J'ai un decker thésaurus et grammaire en mémoire qui doit être appelé des centaines de fois par demande, donc en mémoire est à peu près l'option la plus rapide pour moi. P>
Même toujours, je pense pouvoir reconstruire ce que j'ai dans 2-3 semaines, puis ajouter toutes les nouvelles fonctionnalités dans quelques semaines en utilisant des rails. P>
du côté brillant, tous les CSS, HTML et JavaScript vraiment bien conçus pourraient être portés avec de très peu de problèmes. P>
J'apprécierais des conseils sur le sujet avant de continuer. P>
PS: Je pourrais aussi aller au printemps-roo ... mais ce serait également un retravailleur considérable. Je n'utilisais jamais JPA - J'utilisais directement Hibernate. Je n'utilise pas non plus de JSP - j'utilise Freemarker. P>
5 Réponses :
Consultez Playframework . C'est amusant de se développer et vous pouvez utiliser votre expérience Java pour développer des caractéristiques plus rapides (données que vous avez 2 semaines) que toute autre framework basée sur Java. P>
Vous n'êtes pas obligé de démarrer / arrêter un serveur. Vous réparez le code dans Eclipse et appuyez sur Actualiser sur le navigateur. Aucun traitement de fichiers de guerre jusqu'à ce que vous ne puissiez réellement déployer dans la production. Tout faire de l'éclipse. Effectuez facilement le processus TDD si c'est ce que vous voulez au fur et à mesure que vous développez du code. D'un point de vue de l'architecture, il s'agit d'un cadre totalement apatrice et reposant de la go-go. Complètement JPA entièrement (même pour Nosql comme Mongo), vous n'aurez donc pas à écrire un code JDBC complexe. Sur le front-end, il dispose d'un moteur de modèles complets en utilisant Groovy comme langage de modèles. P>
Je peux continuer et continuer, mais je recommanderais de traverser le site et de jeter un coup d'œil. P>
Vaut aussi à vérifier est Tapestry5 . Il vous permet de créer des modifications de code sur la mouche (aucun redémarrage du serveur requis) et est facilement le cadre le plus rapide et le plus maigre pour développer avec Java que j'ai utilisé. P>
Il faut plus de temps pour obtenir de bons à Ruby et Rails. J'ai travaillé comme un entrepreneur indépendant en tant qu'expert Spring et Hibernate moi-même, mais je me sentais étranglée par java et il est frameworks web alors j'ai décidé d'apprendre Ruby on Rails. p>
Je vous conseille d'apprendre Ruby, de ce que je lis probablement vous le maîtriser, bien être assez frustré par la façon très différente l'utilisation du ORM. J'ai eu des problèmes avec elle, habitués à travailler sur les racines globales dans Hibernate à ActiveRecord une table d'une classe type de modèle. Mais bon, vous pouvez facilement essayer MongoDB d'avoir du plaisir réel. P>
Ruby est p>
ce que je vous conseille de faire le projet que vous décrivez dans Ruby. p>
NO. P>
Non si la vitesse des questions de développement. Vous serez plus lent, croyez-moi. Il y a beaucoup à apprendre, il est des conventions ne sont pas familiers à un bon nombre d'heures programmeur java et quand vous êtes coincé, voler par. P>
La meilleure option serait d'embaucher un développeur Ruby principal pour jumeler avec vous et vous enseigner. Soyez un bon apprenti et vous apprendrez vite. Plus rapide que moi, je devais apprendre plus par moi-même, ce qui est vraiment inefficace. P>
Bonne chance! P>
Eh bien, j'ai joué avec des rails il y a 3 une semaine pour l'enfer. En 8-10 heures, j'avais authentifié avec le salage de mot de passe, 3 écrans de CRUD qui ont été imbriqués, d'une mise en page utilisée, un écran de menu principal, ajout de routes personnalisées et des contrôleurs sécurisés. Cela me semblait assez facile pour moi. Ruby n'était pas difficile à apprendre - je connais déjà Scala aussi et je suis assez bon dans cette langue aussi.
Honnêtement, même si je devais construire mon propre écran de connexion et salage, etc. avec des rails, je pense que j'étais plus rapide. Si vous souhaitez créer un processus de salage de mot de passe personnalisé à la sécurité de printemps, vous devez d'abord passer à travers toute la documentation de merde pour déterminer ce que vous devez mettre en œuvre. C'est comme 2 heures de travail d'enquête afin d'écrire une méthode de 3 lignes. Franchement, je ne me dérangeais pas de faire des choses de zéro avec des rubis / rails - cela semblait en fait plus rapide. Imagine ça. Vous ne devez lire aucune documentation pour créer une méthode d'authentification personnalisée - vous venez de l'écrire.
J'ai aussi vraiment apprécié de ne pas avoir à redémarrer le serveur stupide pour chaque chose stupide. Je reçois seulement cet avantage lorsque je fais HTML / FREEMARKER / JavaScript. Tout ce qui est une classe a besoin d'une recompilation. Cela a vraiment fait des choses une joie. Ne me trompez pas, je n'ai pas vraiment aimé comment je pourrais indiquer des variables qui n'existaient pas à cause d'une faute de frappe ... Cela doit être l'une des choses les plus ennuyeuses des langues dynamiques. Même toujours, cela pourrait être un petit prix à payer pour tous les avantages.
Si vous connaissez aussi Scala aussi, Ruby ne sera pas un problème :) BDD est fort dans le monde de rubis, le test est une meilleure sauvegarde que n'importe quel compilateur. En utilisant de la rubymine, vous obtenez également un excellent IDE, obtenir une autoocom-complétion et en évitant les fautes de frappe. Impressionnant FF Vous aimez l'idée de Java.
Vous pouvez bien sûr essayer de soulever avec Scala, mais je ne saurais pas beaucoup à ce sujet. Ceci donc q est pertinent: Stackoverflow.com/Questtions/2683914/...
Vous devez jeter un coup d'oeil à GRAVES. P>
Vous pouvez continuer à exploiter beaucoup de votre code Java, mais utilisez une langue de script (Groovy) et de nombreux paradigmes des rails. Par exemple. beaucoup de temps économisé à l'aide de la convention plutôt que de la configuration. P>
GRAVES est utilisé par certains beaux sites Web par exemple. BSKYB Le radiodiffuseur par satellite britannique. P>
Cela ne vous aide pas vraiment avec certains des aspects de vitesse de démarrage. Si vous prenez vraiment la vitesse de développement de la vitesse, obtenez une machine plus rapide ou achetez un SSD et adaptez votre machine. Si vous travaillez pour une grande entreprise - Vendez-la à votre responsable en tant qu'option moins chère (par exemple acheter une machine de 2000 $ au lieu de passer 3 semaines de réécrire quelque chose pour économiser 10 minutes par jour). P>
Java sera mieux à long terme à long terme que les rails. La technologie Hotspot dans la JVM est l'une des merveilles de la technologie moderne. p>
Je ne sais pas si je choisirais des greils sur une plaine Jruby sur les rails ou jouer, mais +1 pour le commentaire sur la technologie Hotspot. La JVM est une bête d'une plate-forme - une vision unifiée Les langues interprétées ne peuvent pas vraiment apporter à la table. De plus, les serveurs d'applications sont assez fous (WebSphere Application Server par exemple ... si douceur de déploier de nombreuses applications). S'ils ont fait de l'interface utilisateur et plus amical (il est difficile d'utiliser principalement parce que vous êtes censé acheter des outils supplémentaires) et l'a donné gratuitement, je pense que beaucoup de gars open source changeraient immédiatement les chevaux.
Je donnerais toujours ROO ROO un tir, ce sera le même retravailler que de ruby sur des rails ou des greils ou même moins, mais vous resterez toujours avec quelque chose que vous connaissez, ce qui est souvent la plus grosse considération p>
Il a les concepts d'échafaudage de Ruby sur des rails et des greils, mais cela vous donne une serrure zéro en code, tout simplement écrit (utilisation massive de l'AOP est une question de goût) de printemps + hibernate / jpa (je pense que vous peut utiliser Freemarker pour les vues, Roo a un miriade de plugins, mais je ne suis pas sûr à 100%) p>
Pour vous débarrasser de l'une de vos ennuis, vous pouvez rsync dans une guerre éclatée sur le serveur et que vous téléchargez uniquement les modifications apportées à votre code. Les libs ne seront pas téléchargés à nouveau car ils n'ont pas changé. Je fais ça avec jetée.
Quel outil prend soin de ce resyning? Serait-il aussi arrêter le serveur, la resynchrome et le redémarrer automatiquement? :)
C'est juste un simple script de bash que j'ai écrit qui utilise rsync . Le script pourrait certainement redémarrer / redéployer automatiquement aussi, si cette fonctionnalité a été ajoutée ...