Хосе, еще один веб-фреймворк! Почему, о, почему?
В настоящее время веб-фреймворки на Java — это десятки, это точно. Каждый из них нацелен на разные типы людей. Фреймворк, такой как AppFuse, похоже, фокусируется на начале проекта; Нажмите на компонентно-ориентированный дизайн; Grails на Groovy и т. Д. На прошлой неделе я прочитал о Web4J — новой (коммерческой) среде, которая не поможет разработчику с AJAX.
У каждого есть аудитория. IWebMvc заполняет пробел, предлагая современное и надежное серверное решение, основанное на JEE5, Spring 2.5 и Hibernate-JPA, а также полностью интегрированный интерфейс AJAX. Другие проекты предлагают интеграцию DWR, а некоторые могут включать в себя плагин Dojo, но они не были разработаны с учетом этого, и это видно! IWebMvc с самого начала рассматривал управление клиент-серверными коммуникациями как центральную часть работы. Кроме того, я являюсь коммиттером DWR, что дает мне преимущество, поскольку я могу интегрировать функции между обоими проектами так, как не смог бы сделать ни один другой разработчик.
Конечно, все веб-фреймворки предоставляют несколько ключевых функций, таких как CRUD, i18n, привязка и проверка. Это может иногда быть изобретением колеса.
В двух словах, можете ли вы указать три причины, по которым я бы использовал IWebMvc?
- Готовая функциональность
- Завершите предопределенный стек. Нет плагинов, нет соображений, тесная интеграция, меньше проблем
- Современное состояние: AJAX, Spring 2.5.4, Spring Security 2.0, Spring Webflow 2.0, Dojo 1.1.1, API Google …
Там нет ничего лучше!
Каким образом другие платформы не предоставляют эти возможности?
Я уже говорил об интеграции DWR и о том, как ее нельзя сопоставить (на самом деле, IWebMvc является единственной платформой, которая в настоящее время включает v3). Пару дней назад в списке рассылки Dojo обсуждалась нехватка функций (фреймворков) MVC, доступных для Dojo. IWebMvc был упомянут как мощная альтернатива.
Кроме того, IWebMvc оборачивает dijit в расширенные виджеты, которые объединяют другие технологии, такие как Flash или API Google AJAX. Я почти уверен, что я тоже здесь один.
Конечно, внутренний уровень переполнен, но IWebMvc находится на одном уровне с другими платформами, интегрируя Spring, JPA, TX, AOP, Security, CRUD, потоки …
Можете ли вы провести нас через шаг за шагом, быстрый старт?
Установка всего не может быть проще. Просто скачайте и распакуйте или оформите заказ в Subversion. IWebMvc предоставляет рабочие скрипты сборки на основе Ant + Ivy. Он будет прозрачно управлять переходными зависимостями. Нет проблем.
Запуск демонстрационного приложения одинаково прост, поскольку он включает в себя цель Ant (которая может быть запущена из пакетного файла в Windows), которая выполняет встроенный сервер Jetty. Вот это развернуто в Eclipse:
Разработчик может сразу же открыть проект в обоих NetBeans 6.1 …
… или Eclipse 3.3:
… и развернуть либо Glassfish, либо Tomcat. После развертывания фреймворк автоматически создаст схему БД, поэтому опять никакой дополнительной работы там не будет (просто создайте пустую базу данных при использовании MySQL).
Примечание. В IWebMC код платформы находится рядом с кодом приложения. Там нет реального разделения. Это сделано для того, чтобы любой разработчик мог изменить класс платформы / widget / tag / JSP, как если бы он был частью приложения. В финальном выпуске будут доступны три версии: одна с расширенной платформой, одна с платформой, упакованной как JAR (внутри WEB-INF / lib), и одна со встроенным демонстрационным приложением.
Исходя из описанной выше ситуации, пользователям предлагается просмотреть демонстрационное приложение и увидеть его функциональность. Следующим шагом будет создание объекта домена и проверка автоматически сгенерированных операций CRUD.
@Entity
@Indexed
@Table(name = "ITEMS")
@NamedQuery(name = "Item.findAll", query = "SELECT i FROM Item i")
class Item extends AbstractDomainEntity {
@Field
@Column(name = "REFERENCE")
@StringConstraint(minLength = 1)
String reference
@IndexedEmbedded
@JoinColumn(name = "COMMERCIAL")
@ManyToOne(fetch = FetchType.EAGER, cascade = [CascadeType.ALL])
I18nText name
@DateConstraint(maxValue = DateConstraint.DateLiteral.TODAY)
@Temporal(TemporalType.DATE)
@Column(name = "DATEPACKAGED")
Date packaged
@BeanConstraint
Rating quality
@JoinColumn(name = "WAREHOUSE")
@ManyToOne(cascade = [CascadeType.ALL])
Address storeLocation
@JoinColumn(name = "PHOTO")
@ManyToOne(fetch = FetchType.EAGER, cascade = [CascadeType.ALL])
Image image
}
Приведенный выше код автоматически получит разработчик (менее чем за пять минут):
- Обновление схемы БД
- Полнотекстовый поиск и фильтрация
- Данные на нескольких языках (столько, сколько определено)
- Проверка (в полях строки, даты и объекта)
- Операции создания, чтения, обновления, удаления
- Две (настраиваемые) страницы для работы
- Защищенный URL
Смотрите один скриншот (поля могут быть расположены по-разному, используя пользовательскую страницу вместо стандартной):
Или попробуйте Groovy Script и избегайте повторного развертывания!
Можете ли вы сравнить и сопоставить IWebMvc со следующими альтернативами: JSF, Struts, GWT, Wicket.
- JSF: IWebMvc предоставляет клиентские компоненты на основе виджетов Dojo, получает AJAX через DWR, привязку и проверку через Spring, а также внутренний компонент, представляющий собой POJO, аннотированный с использованием JPA. Я никогда не любил JSF.
- Struts: IWebMvc полностью опирается на Spring MVC, поэтому любое сравнение между ними применимо здесь.
- GWT: IWebMvc предоставляет все необходимые JS для разработчика. Между DWR и GWT идет какая-то работа, поэтому я могу включить некоторую поддержку в будущем …
- Калитка: Здесь у нас есть сравнение яблок с яблоками. Это может быть делом вкуса, в IWebMvc вы не увидите никакого кода вроде add (new Label («counter», model)) ;. Конечно, стек отличается и для людей, привыкших к Spring MVC и Dojo, вероятно, IWebMvc подходит более естественно. И вы можете код в Groovy! Wicket — это проект Apache, хотя …
Почему он называется IWebMvc?
«Я» происходит от Internna , компании, которую я основал в 2005 году. Остальное, ну … Мне нужен консультант по маркетингу. ?
Когда и как вы начали работать над этим фреймворком?
Середина января 2008 года. Первый выпуск занял около шести месяцев, так как раньше я создавал подобные архитектуры. Я был в процессе смены работы и у меня было много свободного времени. Я был счастлив от того, как все складывалось, поэтому я продолжил.
Есть ли другие, вовлеченные в проект?
Просто я. Я открыт для вкладов и помощи!
Каковы сроки выхода следующих релизов и что вы ожидаете от них?
IWebMvc предоставляет большое количество функций к настоящему времени. Более 40 виджетов! Я призываю любого заинтересованного разработчика взглянуть на записанные видеоролики ( http://code.google.com/p/internna/downloads/list ). Они показывают большинство функций на стороне клиента. Итак, я заморозил кодовую базу. В течение последних шести месяцев моей главной заботой было добавление функциональности. Они изменились, и я просто беспокоюсь об устранении ошибок и получении версии 1.0, готовой к работе. Я ожидаю получить RC через 10 дней и окончательный выпуск до конца июня.