Django как фреймворк для Java

Я разработчик Java. Существует ли какая-то инфраструктура Django/Ruby-on-Rails для Java? Мне не нравится создавать панель администратора для каждого проекта, который я делаю. Скучно повторять то же самое снова и снова. Также для моего нового проекта у меня короткий срок, и я хотел бы использовать какую-то структуру Java, которая ускоряет разработку.

Ответ 1

Недавно я нашел фреймворк, который очень похож на django. Это называется playframework, и вы можете найти его здесь:

http://playframework.org/

Я предлагаю вам посмотреть видео на первой странице.

Другой Java-подход, основанный на django, - это Spring Roo, но, на мой взгляд, он не совсем готов. В прошлый раз, когда я использовал его, документация практически не существовала.

http://www.springsource.org/roo

Ответ 2

Взгляните на подключаемый интерфейс администрирования LightAdmin для веб-приложений с поддержкой Spring/JPA.

Как правило, при разработке веб-приложений вам необходимо иметь какой-то административный интерфейс с полезным пользовательским интерфейсом, и ему скучно разрабатывать его с нуля все время и поддерживать его в будущем.

Лично я решил это для своих проектов Java, просто подключив библиотеку LightAdmin и выполняя некоторые настройки из конфигураций DSL.

Все, что вам нужно сделать, это объявить зависимость Maven и включить панель администрирования в вашем web.xml. Сразу после этого у вас будет многофункциональный интерфейс с полной поддержкой CRUD, фильтрацией, областями, безопасностью и т.д.

LightAdmin DSL для примера настройки панели администратора:

@Administration( Booking.class )
public class BookingAdministration {

public static ScopesConfigurationUnit scopes( final ScopesConfigurationUnitBuilder scopeBuilder ) {
    return scopeBuilder
        .scope( "All", all() )
        .scope( "Smoking Apartments", specification( smokingApartmentsSpec( true ) ) )
        .scope( "Non Smoking Apartments", specification( smokingApartmentsSpec( false ) ) )
        .scope( "Long-term bookings", filter( longTermBookingPredicate() ) ).defaultScope().build();
}

public static FiltersConfigurationUnit filters( final FiltersConfigurationUnitBuilder filterBuilder ) {
    return filterBuilder
        .filter( "Customer", "user" )
        .filter( "Booked Hotel", "hotel" )
        .filter( "Check-In Date", "checkinDate" ).build();
}

public static FieldSetConfigurationUnit listView( final FieldSetConfigurationUnitBuilder fragmentBuilder ) {
    return fragmentBuilder
        .field( "user" ).caption( "Customer" )
        .field( "hotel" ).caption( "Hotel" )
        .field( "checkinDate" ).caption( "Check-In Date" )
        .field( "smoking" ).caption( "Smoking" )
        .field( "beds" ).caption( "Beds" )
        .build();
}

public static DomainTypePredicate<Booking> longTermBookingPredicate() {
    return new DomainTypePredicate<Booking>() {
        @Override
        public boolean apply( final Booking booking ) {
            return booking.getNights() > 20;
        }
    };
}

public static DomainTypeSpecification<Booking> smokingApartmentsSpec( final boolean isSmokingApartment ) {
    return new DomainTypeSpecification<Booking>() {
        @Override
        public Predicate toPredicate( final Root<Booking> root, final CriteriaQuery<?> query, final CriteriaBuilder cb ) {
            return cb.equal( root.get( "smoking" ), isSmokingApartment );
        }
    };
}

}

Ответ 3

Также для моего нового проекта у меня короткий срок, и я бы хотел использовать какую-то структуру java, которая ускоряет разработку.

Я бы с осторожностью относился к выполнению проекта с коротким сроком, используя фреймворк, с которым я не знаком. Это звучит как рецепт переполнения крайних сроков. Придерживайтесь технологий, с которыми вы уже знакомы... и ждите проекта с более расслабленными сроками, когда вы можете позволить себе время совершить несколько ошибок.

Ответ 6

Посмотрите на JHipster. Почему это хорошо?

  • Создайте интерфейс GUI, основанный на загрузке.
  • Созданный код клиентской стороны основывается на nodejs и AngularJs
  • Сгенерированный код сервера основан на Spring boot
  • Unit test, и тесты интеграции автоматически генерируются.
  • У вас есть широкий выбор возможностей для клиентской и серверной систем.

Эти точки означают, что вы построите свое развитие на современном наборе инструментов и фреймворках. JHipster намного больше, чем это, посмотрите: https://jhipster.github.io/

Ответ 7

Вы можете попробовать также Spring Framework или Play Framework, если вы хотите закодировать в Java для Интернета. Чтобы создать GUI, вы можете использовать Vaadin

Вот некоторые из моих примерных проектов в Spring (я использовал только Spring до сих пор и, похоже, хорошо работает для того, что я хочу делать):

Вы также можете автоматически генерировать геттеры/сеттеры на основе полей, которые у вас есть в ваших классах, используя Project Lombok. Я использую это тоже в своих проектах, это помогает мне писать меньше кода и сосредоточиться на основных проблемах, которые я должен решить, используя свои навыки кодирования (если я хочу добавить собственный код в методы, которые я генерировал автоматически, я могу написать их позже, как Мне нужно).