Я недавно был в этой дилемме и решил пойти с реальным Mac, а не Hackintosh после слушания историй моего друга (кто делает его специально для разработки iPhone). Он смог получить работу разработки iPhone, но его hackintosh всегда имеет одну проблему или другого; новый был постоянным циклическим повторением начальной загрузки, где машина сразу перезагрузит после загрузки ОС.
Взгляд с другой стороны: продукты Apple популярны и легки продать. Если Вы получаете один и продаете его, прежде чем следующее поколение выйдет, можно вернуть большую часть денег - деньги, которые были бы потрачены так или иначе на новом жестком диске (для изоляции hackintosh, heh) или OSX (предполагающий, что Вы означали получать программное обеспечение, по крайней мере, удаленно легальным способом).
Если вам нравится философия «все на Java», которой следует Wicket, то вы можете предпочесть Guice Spring. В Guice нет конфигурации XML - все это делается с помощью класса Guice Module
.
Например, ваш класс Wicket WebApplication
может выглядеть примерно так:
public class SampleApplication extends WebApplication
{
@Override
protected void init()
{
addComponentInstantiationListener(
new GuiceComponentInjector(this, new GuiceModule()));
}
}
GuiceComponentInjector
происходит от расширения wicket-guice. Вот модуль:
public class GuiceModule extends AbstractModule
{
@Override
protected void configure()
{
// Business object bindings go here.
bind(Greetings.class).to(GreetingRepository.class);
}
}
В этом примере Greetings
- это интерфейс, реализованный конкретным классом GreetingRepository
. Когда Guice нужно внедрить объект Greetings
, он удовлетворит зависимость с помощью GreetingRepository
.
Я собрал пример проекта , который демонстрирует, как создать приложение Wicket / Guice для Google App Engine. Вы можете спокойно игнорировать особенности App Engine и сосредоточиться на том, как работает интеграция Wicket-Guice.
Если вы все-таки выберете Guice, обязательно посмотрите Warp Persist для Hibernate, Guice Servlet для Tomcat и wicket-guice ] для Wicket.
Spring, вероятно, даст вам больше гибкости, но если вам просто нужен DI, то Guice может быть лучшим выбором.
На этот вопрос сложно ответить, поскольку в Spring так много функций, которые сделают DAO более гибким и хорошо работают с Hibernate. Было бы полезно, если бы у вас было больше требований к тому, что вы ищете.
Вот пара сравнений между Spring и Guice и Spring, Guice и Picocontainer.
http://code.google.com/p/ google-guice / wiki / SpringComparison
http://www.christianschenk.org/blog/comparison-between-guice-picocontainer-and-spring/
Не забудьте CDI / JSR-299, часть Java EE 6. Вы можете использовать сварную калитку для интеграции калитки с CDI.
(при условии, что вы используете реализацию сварного шва (как GlassFish v3 и JBoss 6), но калитка сварного шва довольно мала, поэтому вы, вероятно, можете адаптировать ее при необходимости).
Мне удалось получить Wicket 1.4 + weld-wicket + wicket-contrib-javaee + EJB 3.1 + JPA 2.0 + wicket-security (SWARM) + Spring Security 3 + Spring 3, работающие вместе в небольшом доказательство применения концепции. Однако это слишком много фреймворков, вероятно, откажутся от spring -security и spring, поскольку они кажутся избыточными.