Eu escrevo aplicativos Java corporativos e serviços da Web no trabalho ( Spring , Hibernate, Maven, RESTEasy) e PHP (CakePHP) e Python (Django) para meus projetos paralelos.
Embora eu veja o valor que a Inversão de controle, a programação orientada a aspectos, etc., que o Spring traz, não tenho certeza de como aplicativos Web massivos que não estão na pilha Java gerenciam sem uma estrutura como o Spring.
Então, os desenvolvedores precisam apenas "tolerar" componentes fortemente acoplados e outras queixas que o Spring elimina ou estou perdendo alguma coisa?
Para quem não conhece o Spring, os recursos que mais usamos são:
Inversão do contêiner de controle: configuração dos componentes do aplicativo e gerenciamento do ciclo de vida de objetos Java,
Programação orientada a aspectos: permite a implementação de rotinas transversais,
Gerenciamento de transações: unifica várias APIs de gerenciamento de transações e coordena transações para objetos Java.
Respostas:
Outras plataformas não precisam do Spring, porque essas linguagens não são nem de longe tão restritivas quanto o Java.
Vou dar um exemplo com node.js
A configuração do servidor é feita no código ou em um simples arquivo json config. Quanto aos sistemas genéricos de IoC, simplesmente não precisamos deles, o Javascript é uma linguagem expressiva e dinâmica. Sim, você precisa de IoC, mas isso é simples, passe dependências para seus objetos como parâmetros de função.
Simplesmente não acho que precisamos de algo assim, escrevemos código modular e simplesmente funciona.
noSQL é incrivelmente popular. Não há noção de transação.
Pessoalmente, eu diria que esses sistemas são inchados e super projetados e você simplesmente não precisa deles. Outros idiomas e plataformas simplesmente permanecem enxutos e ágeis.
fonte
Na maioria das linguagens de alto nível, é trivial escrever usando os princípios de design de AOP e / ou IoC.
Tudo o que você precisa para implementar o AOP é que o idioma suporte funções de ordem superior. Por exemplo:
Você também pode seguir os princípios gerais de IoC ou Injeção de Dependência ao programar. Você não precisa de um contêiner específico para fornecer esse recurso. Você pode simplesmente escrever o código dessa maneira.
fonte
Bem Python gosta da Primavera também Spring Python .
O framework Spring foi criado para facilitar o desenvolvimento Java e o que é verdadeiro para o desenvolvimento Java não é necessário para o desenvolvimento Ruby ou Python.
Ruby, por exemplo, possui recursos de metaprogramação, o que significa que você pode criar seu próprio AOP.
Ironicamente, as novas estruturas Java da Web estão tentando capturar as estruturas Django e Rails (consulte estruturas Grails e Play! Por exemplo).
fonte
Para Python, o BlueBream (também conhecido como Zope 3) fornece o que o Spring faz e muito mais.
Complexidade e poder têm um custo, há momentos em que você não deseja pagar.
Muitos programadores acham o BlueBream assustador e exagerado para o que precisam fazer, preferindo kits de ferramentas menores e mais enxutos. A maioria das outras soluções (Django, etc.) é baseada no paradigma MVC.
Você também pode ver forças similares em ação no espaço Java, com coisas como o belo Playframework .
fonte