Ответы пользователя по тегу Java
  • Какую первую книгу по программированию выбрать?

    Colwin
    @Colwin
    Ведущий Java-разработчик
    Вот еще вопрос на ту же тему: Какую книгу по java купить для новичка?
    Ответ написан
    Комментировать
  • Какую книгу по java купить для новичка?

    Colwin
    @Colwin
    Ведущий Java-разработчик
    Комментарий про Седжвика - блеск!
    Но все-таки для комфортного восприятия языка я бы предложил Хортсмана, первый том, причем даже не весь - можно смело пропускать аплеты, например.
    А после нее - в обязательном порядке алгоритмы.
    Программист без знания алгоритмов - печальное зрелище, если честно.
    Как правило, у таких людей нет понимания концепций и причинно-следственных связей, по которым принимаются сложные архитектурные решения.
    Ответ написан
    Комментировать
  • Какую первую книгу по программированию выбрать?

    Colwin
    @Colwin
    Ведущий Java-разработчик
    Я лично рекомендую Java Core, как на русском, так и на английском.
    Лучше учебника по Java для новичков не видел.
    А алгоритмы уже потом по Вирту - знаний Java должно хватить, чтобы переписать алгоритм по-своему. Тем более что в книге дается не только код, но и описание алгоритма - вот и напишите по описанию. Заодно будет неплохая практика.
    Ответ написан
    1 комментарий
  • Как правильно писать на Java/Scala/C#/etc?

    Colwin
    @Colwin
    Ведущий Java-разработчик
    Все дело в целях и объемах приложения.
    Если вам нужен маленький Application — можете хоть JSP + Servlet использовать.
    Если же большое приложение со множеством модулей, интеграцией с различными системами и гибкой системой динамически подключаемых модулей — это уже совсем другие подходы а-ля Spring + Hibernate + Maven + JBoss, разделение на слои, отделение модели данных от модели предметной области и т.д.
    У Вас слишком общий вопрос для конкретных рекомендаций. Хороший архитектор выбирает средства по задаче.
    Ответ написан
  • Ссылка на файл вне JAR'a?

    Colwin
    @Colwin
    Ведущий Java-разработчик
    Хоть я и категорически против такой практики, многие приложения в последнее время стали упорно создавать свои личные каталоги в пользовательском каталоге. Возможно, Вам тоже этот вариант подойдет.
    Ответ написан
    Комментировать
  • Банальный вопрос по потокам

    Colwin
    @Colwin
    Ведущий Java-разработчик
    если и остались некоторые косяки в коде, то раньше чем пока моя кучка классов не вырастет в приложение их я не найду.


    <irony>Вы расписываетесь, что вы — быдлокодер?</irony> :-)
    Ответ написан
  • Дизайн API для матричной библиотеки?

    Colwin
    @Colwin
    Ведущий Java-разработчик
    Сразу: код не смотрел.

    Однако по концепции я бы лично не стал выносить toArray() в общий интерфейс, т.к. слабо могу себе представить, где было бы необходимо преобразовывать разряженную матрицу в обычную. Лучше посмотреть сценарии, когда такое преобразование кажется логичным, и вынести в интерфейс операции, которые вынуждают Вас выносить toArray() в общий интерфейс. Для разряженных операций эта операция по определению дорогая, и, IMHO, в реальных задачах от этого не много смысла.
    Ответ написан
    2 комментария
  • RowSet Выборка больших объемов данных с демонстрацией прогресса

    Colwin
    @Colwin
    Ведущий Java-разработчик
    Тут есть ровно одна проблема — недетерменированность времени выполнения запроса (если это БД).

    Как правило, за счет разбиения запроса на куски (что необходимо для демонстрации прогресса) получается увеличение времени выполнения (как правило, нелинейное). так что тут в каждом случае приходится решать, чем жертвовать: предсказуемой скоростью progress bar'а или производительностью.

    А если большой объем данных берется из хранилища с предсказуемым временем доступа — тут, думаю, никаких проблем впринципе нет.
    Ответ написан
    Комментировать
  • Насколько дорог throw?

    Colwin
    @Colwin Автор вопроса
    Ведущий Java-разработчик
    Написал небольшой тестик:

    
    public class Test
    {
        public static final RuntimeException fex = new RuntimeException();
    
        public static void main(String[] args) throws Exception {
            long start;
            long end;
    
            start = System.currentTimeMillis();
    
            for (int i = 0; i < 10000; i++) {
                testReturn(0);
            }
    
            end = System.currentTimeMillis();
    
            System.out.println("Return time: " + (end - start) + "ms");
    
            start = System.currentTimeMillis();
    
            for (int i = 0; i < 10000; i++) {
                try {
                    testExceptionThrow(0);
                } catch (RuntimeException e) {
                }
            }
    
            end = System.currentTimeMillis();
    
            System.out.println("Exception throw time: " + (end - start) + "ms");
    
            start = System.currentTimeMillis();
    
            for (int i = 0; i < 10000; i++) {
                try {
                    testExceptionCreate(0);
                } catch (RuntimeException e) {
                }
            }
    
            end = System.currentTimeMillis();
    
            System.out.println("Exception create time: " + (end - start) + "ms");
        }
    
        public static void testReturn(int count) {
            if (count > 1000) {
                return;
            } else {
                testReturn(count + 1);
            }
        }
    
        public static void testExceptionThrow(int count) {
            if (count > 1000) {
                throw fex;
            } else {
                testExceptionThrow(count + 1);
            }
        }
    
        public static void testExceptionCreate(int count) {
            if (count > 1000) {
                throw new RuntimeException();
            } else {
                testExceptionCreate(count + 1);
            }
        }
    }
    


    В результате имеем следующие цифры:

    Return time: 15ms
    Exception throw time: 203ms
    Exception create time: 1079ms


    Тест, конечно, не претендует на большую точность, однако порядок величин показывает.
    Ответ написан
    Комментировать
  • Как же нормально работать с java.util.logging?

    Colwin
    @Colwin
    Ведущий Java-разработчик
    Копайте исходники ConsoleHandler. Там используется System.err для вывода, причем попытка его подменить через наследование вызывает закрытие (!) stream'а.
    Так что лучше в этом случае не использовать ConsoleHandler, а написать свой, наследуя от StreamHandler'а.
    Ответ написан
    Комментировать
  • Идеи по поводу развития блога Java

    Colwin
    @Colwin
    Ведущий Java-разработчик
    Я хоть и Java-програмист, но все более склоняюсь к ООП как таковому, без привязки к конкретной технологии. Ведь правильные подходы в основном одинаково реализуются на подобных языках.
    Ответ написан
    Комментировать
  • Выбор Java IDE

    Colwin
    @Colwin
    Ведущий Java-разработчик
    IntelliJ IDEA Ultimate содержит очень много полезных плюшек.
    В частности, быстрые template'ы при настройке под конкретный проект в несколько раз убыстряют написание кода. Фактически, практически все время тратится на обдумывание, а реализация очень быстрая.
    Для сопровожденцев же в ней есть незаменимые инструменты рефакторинга и анализа взаимосвязей в коде.
    Language Injection — незаменимая вещь, аналогов в других IDE не знаю.
    Ну, а про поддержку на уровне синтаксиса и рефакторинга самых различных framework'ов я вообще молчу.
    Ответ написан