Ответы пользователя по тегу Java
  • В чем недостатки Java для веб-разработки?

    @sergei-grigorev
    Сам занимаюсь разработкой под Java EE для крупных корпоративных веб-приложений. Могу сказать, что тут полно всяких требований к самому приложению. его расширению и масштабированию. Т.е. для крупных корпоративных приложений это нормально, ведь к ним предлагаются более высокие требования надежности. Но если идти тем же путем для простых сайтов, то вы в значительной степени увеличите сроки сдачи. Вероятно по этому для простой веб-разработки смысла в Java EE мало (куда быстрее написать на более простом фреймворке), а вот для крупных веб-приложений она в значительной степени более восстребована, чем указанные вами Ruby и Python.
    Ответ написан
    9 комментариев
  • Обработчик кнопки на GWT?

    @sergei-grigorev

    Вы не сможете передать вот так вот кнопку внутрь обработчика
    new Button("Add user", new ClickHandler(this) {
    Просто потому, что сперва будет создан ClickHandler (т.к. это вычисляемое значение) и только потом его экземпляр передан в конструктор Button. К моменту создания ClickHandler у вас конструктор кнопки еще не вызван и ссылки на него нет

    Ответ написан
  • Регулярное выражение

    @sergei-grigorev
    Заключаете слова в скобки, наподобие таких (\w+)\[(\w+)\](\w+) и потом получаете 3 группы, в каждой из которых по одному слову из вашего примера
    Ответ написан
    Комментировать
  • Почему при Remote Debug веб-приложения оно виснет у всех пользователей?

    @sergei-grigorev
    Потому что по-умолчанию блокируются все потоки. Устанавливая брейкпоинт, в его настройках ставьте thread вместо suspend (в Intellij Idea, например)
    Ответ написан
    Комментировать
  • Как правильно писать на Java/Scala/C#/etc?

    @sergei-grigorev
    А еще можно воспользоваться JRebel, чтобы на ходу обновлять код, включая EJB-компоненты. Это позволит экономить время на деплойменте (за день я запускаю деплой обычно не чаще 3х раз). И соглашусь с deadkrolik, что неплохо писать юнит-тесты, так можно быстро найти и исправить ошибку в отдельном участке кода.
    Ответ написан
    Комментировать
  • Безопасная работа с данными в многопользовательском WEB-приложении?

    @sergei-grigorev
    Как вариант — использовать отдельные namespaces, тогда сущности не будут доступны посторонним пользователям даже на чтение (используя уязвимости системы, где вы забудете поставить фильтр по пользователю). Тогда будет что-то вроде
    public void updateGroup(GroupEntity group, String usernamespace) {
            jdbcTemplate.update("UPDATE " + usernamespace + ".groups SET password = ?, name = ? WHERE group_id = ?", 
                    group.getPassword(), group.getName(), group.getId());
    }
    <source>
    Ответ написан
  • Проектирование Java приложений для чайников?

    @sergei-grigorev
    Для работы с базой данных, посмотрите пример реализации с использованием фреймворка MyBatis. www.mybatis.org/core/getting-started.html

    Мне в нем очень нравится архитектура, в которой происходит работа с объектами базы данных. Все достаточно логично и наглядно.

    Здесь применяется sqlSessionFactory, который отвечает за подключение к базе данных. Для доступа к конкретным сущностям используются мапперы, например BlogMapper. Эти мапперы позволяют считывать, изменять и удалять объекты Blog из базы данных.

    sqlSessionFactory создается при старте приложения и сохраняется, например, в Singleton поле.
    Ответ написан
    Комментировать
  • Посоветуйте библиотеки/фреймворки для работы с БД из "толстого" клиента?

    @sergei-grigorev
    MyBatis, не является полноценным ORM как Hibernate, но в нем есть возможнось писать sql-запросы в отдельных XML файлах и маппить результаты на объекты, за счет чего можно добиться неплохой производительности, а также использовать все фишечки используемой СУБД.
    Ответ написан
  • jdbc - два запроса в одном соединении

    @sergei-grigorev
    Нет, не нужно поднимать новое соединение на каждый запрос. Нужно закрывать имеющиеся statements перед вызовом новых. Просто в данном случае, у тебя одновременно открыто два разных запроса, один из которых в пакетном режиме подтягивает данные из одной таблицы, а второй — подтягивает совершенно другие данные из второй таблицы. Одновременно это быть не может. В данном случае вам действительно потребуется два коннекта (используйте пул соединений для более эффективной работы). Либо вы можете подтянуть данные сначала из одного запроса, закрыть PrepareStatement и ResultSet, и только затем уже подтягивать данные из второй таблицы.
    Ответ написан
    1 комментарий
  • Реализация шаблонов Java?

    @sergei-grigorev
    Попробуйте так
    Set<? extends java.util.Map.Entry<String, T>> x = new HashSet<TrieEntry>();
    Ответ написан
    1 комментарий
  • Java logging: как вы объявляете log-поле в классе

    @sergei-grigorev
    Использую первый способ, специально для этого в Intellij IDEA сделал макрос. Специально для того, чтобы даже если класс потом кем-то отнаследуется, лог все равно привязывался к конкретному классу и было легче найти строчку, где сообщение было сгенерировано.

    private static final org.slf4j.Logger LOGGER =
    org.slf4j.LoggerFactory.getLogger($CLASS_NAME$.class.getName());
    Ответ написан
    1 комментарий
  • Технологии используемые для разработки сервера на java в трехзвенке?

    @sergei-grigorev
    Технологии, которые потребуются вам изучить (по-минимуму):
    * JNDI-каталог (в нем прописывается jdbc-ресурс — адрес до базы данных)
    * EJB (бизнес-уровень, в нем как раз используете hibernate, транзакции)
    * Servlets и JSP (уровень отображения данных, проще говоря — генерация html-страниц)

    Если в EJB все понятно (выбирать особо не из чего), то для JSP вы можете воспользоваться библиотеками MVC, среди которых достаточно удобные и с большим количеством документации Struts2, Sprinc VMC и пр.
    Ответ написан
    5 комментариев
  • Защита программы от декомпиляции Java, C++, С#

    @sergei-grigorev
    Для Java и C# используются обфускаторы, из-за них декомпилляция уже не доставит удовольствия, плюс к этому, обычно в они добавляют в код защиту, некоторый код, приводящий к отказу работы декомпиллятора.
    Ответ написан
    Комментировать
  • Посоветуйте пожалуйста литературу по Java EE

    @sergei-grigorev
    Изучать Java с нуля можно по книжке Кей Хорстманн, Гари Корнелл Java 2. Библиотека профессионала (Core Java), она в двух томах, все расписано подробно, мне очень понравилось. Литературу именно по Java EE посоветовать не знаю чего, но вот если освоились с самой Java, то посоветую почитать статьи про Java EE на сайте ibm.com, там их достаточно много (включая на русском языке) и все они хорошо расписаны, причем не на примерах типа Hello World.
    Ответ написан
    5 комментариев
  • Как лучше реализовать entity в java?

    @sergei-grigorev
    В нашем продукте крайне важна производительность, потому что обрабатываются огромнейшие количества данных. Поэтому мы используем Entity на каждую таблицу, затем они переносятся в отдельные DAO объекты, которые реализуют логику связывания объектов, с предварительными проверками качества данных и т.п., а также возможностью подгружать данные не полностью. В этом случае часть данных, например специальные ключи, идентифицирующие записи или связи, подгружаются через jdbc, а не через Entity.
    Ответ написан
    1 комментарий