Познаём Java. Первая чашка

    Что да как


    Я решил поддержать начинание MaxElc и DarwinTenk, и начать потихоньку рассказывать про Java. Текст буду подавать «чашками» потому, что один из символов Java — чашка кофе. Большую часть я буду писать сам, изредка поглядывая в википедию и на официальный сайт языка — java.sun.com (раздел /docs).
    Далее в тексте стоит разделять понятия «Java как язык» и «Java как платформа».

    Краткая история


    Как язык, Java планировалась компилирующейся в байт-код, который затем будет запущен в интерпретаторе, но позже интерпретатор был заменён Just-In-Time компилятором.
    Синтаксис языка, фактически был взят из C++ и несколько упрощён. Со временем, там появились некоторые специфичные элементы, о которых будет рассказано потом.
    Версий языка всего есть ровно 6 — 1, 1.1, 1.2, 1.3, 1.4, 1.5 (она же 5.0) и 1.6 (6.0). Седьмая ожидается к 2010 вроде. Актуальными по сей день являются 5 и 6 версии.
    Полную историю языка, к сожалению, я рассказать не смогу, поэтому за именами и фамилиями основателей и разработчиков — прошу в Википедию.

    Архитектура


    Как платформа, Java является типичным набором библиотек и существует в 3 ипостасях, предназначенных для разных целей: J2ME, J2SE, J2EE. Это, соответственно, мобильный, стардартный и enterprise.
    Кроме основы языка, они включают:
    • M: общий набор классов для телефонов. Многие из них реализуют производители телефонов (см. ниже про Java-машину);
    • S: библиотеки Swing/AWT для работы оконных приложений, расширенный Collections Framework, а также много чего ещё;
    • E: особый набор API и классов для работы с базами данных, передачи сообщений, обработки запросов, обеспечения сохранности и прочее.


    Итак, у нас есть в наличии набор библиотек и компилятор, создающий байт-код. Полученную радость мы запускаем в… Java-машине!
    Java-машина представляет собой стандартную среду запуска Java-программ (JRE). Основная реализация — Hot Spot от Sun, но кроме неё свои реализации имеют HP, Oracle, IBM, Novell; кроме того существуют десятки менее известных реализаций. Кроме того, если вы достанете сейчас свою старенькую Нокию или Сименс M45, то посмотрите им в лицо — на вас смотрит машина. Джава-машина. Зашитая в телефон, да; именно она будет запускать Java-игры, когда вы попросите.Разумеется, вес вшитой в телефон джава-машины на пару порядков меньше чем вес её же на сервере — очевидно, что их возможности малосравнимы.
    Теоретически, один и тот же код разные Java-машины должны выполнять одинаково. За это отвечают тесты, которые Java-машины должна проходить перед выходом в свет.

    Попробуем на вкус?


    Давайте напишем небольшое приложение на Java. Берём блонкот и…
    class HelloWorld {
     public static void main(String[] args){
      System.out.println("Hello world!");
     }
    }

    * This source code was highlighted with Source Code Highlighter.

    Так, что мы тут наделали. Сначала мы объявили класс, HelloWorld. Хитрая особенность java — файл, где лежит код класса должен называться именем класса и иметь расширение .java. Скомпилированный в байт-код класс получит расширение .class. Это поможет вам легко находить ваши классы. Подробнее о том, как происходит работа с классами и что такое package (набор классов) мы узнаем в следующей чашке :)
    Далее, мы объявили статический метод main — это точка входа в программу, наличие этого метода означает что класс может быть использован для старта программы.
    В качестве параметров нам даётся массив строк — использовать их пока не нужно, проигнорируем их.
    Наконец, у класса System (он виден везде; почему — расскажу позже) мы получили static-объект out, являющийся потоком вывода и написали в него строку «Hello World». Всё.

    Чтобы попробовать запустить всё это самостоятельно вы должны поставить Java-машину. Например, стандартную от Sun. Предупреждаю — весит она немало. Кроме того, оттуда же вам нужно скачать JDK, набор разработчика. В нём находятся нужные вам инструменты, включая компилятор. Также. вы можете скачать среду разработки — например NetBeans, Eclipse, IntelliJ IDEA. Однако, я бы не советовал этого делать — зачастую для изучения языка с нуля оптимальным средством является блокнот с подсветкой, например Notepad++.
    • сначала пишем текст класса в файле HelloWorld.java;
    • вызываем javac HelloWorld.java;
    • запускаем java HelloWorld.

    Выглядит у меня это так:
    ~$ vim HelloWorld.java
    ~$ javac HelloWorld.java
    ~$ java HelloWorld
    Hello world!
    ~$


    Текст написан ручками в gedit.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 141

      +19
      А вы знаете, хорошая тенденция пошла на статьи, так держать.
        +6
        *пожимая плечами* Надеюсь, буду полезен.
        0
        подкаст в тему: taop.rpod.ru/
          0
          Слушал его, пока не обновился до Ubuntu 8.10 — там RhythmBox глючит и не даёт качать подкасты.
          Согласен с вами — отличная вещь. Нового я оттуда не узнал, но в качестве первого знакомства — вполне, вполне…
            0
            По поводу комментария: Banshee вам в помощь (столь же GTK`шная штука, как и Rythbox, во многих дистрибутивах по дефолту его заменяет).

            По поводу поста: продолжайте, пожалуйста. Чем смог — уже помог :) Хотя, по-хорошему, помогать конечно надо контентом, а не пузомерками. Вы продолжайте, может вдохновите и на серьёзную помощь. А пока — спасибо за уже написанное.
              0
              Несколько не в тему, но таки качает, нужно попробовать «полностью удалить» и установить заново
              0
              Пытался я его слушать, с его регулярностью и повторением одного и того же в разных подкастах, тяжело по нему получит представление о программировании, я дослушал только до 9-го, если не ошибаюсь, подкаста, очень интересно как они без кода учат на слух, или они в шоуноты код выкладывают?
                0
                имхо такой подкаст нужно слушать чтобы отрефрешить знания чуток и чтобы рассказать новичкам о связанных вещах.
              +2
              «Java-машина представляет собой стандартную среду запуска Java-программ (JRE)»

              Такое утверждение не совсем верно. JVM это часть JRE. Еще в runtime environment входит библиотека классов и приложения для запуска виртуальной машины под операционной системой.
                +3
                Дело в том, что JRE — это не обязательно виртуальная машина. Это среда запуска приложений. Теоритически, JRE может иметь и другую архитектуру, она не обязана быть именно «виртуальной машиной». В английской википедии, упоминается, что JVM — это реализация JRE, но не её часть.

                Хотя, можно сказать так: стандартная JVM — часть стандартной JRE, которая сама по себе — часть JDK.
                  +2
                  Английскую википедию пишут разные люди с разными точками зрения.

                  Если речь идет о Java, то логично использовать терминологию компании Sun. Вот тут: java.sun.com/javase/6/docs/technotes/guides/index.html#jre-jdk или вот тут: java.sun.com/javase/technologies/index.jsp тема раскрыта.
                    +1
                    Возможно, вы правы. К сожалению, дело имел только с реализациями Sun и Oracle (не считая мобильных), так что наверняка не скажу.
                  0
                  Не могу помочь в решение вашего «спора», но не пойму, зачем делать замечания по таким мало важным и спорным фразам?
                  +6
                  такими темпами, после моего любительского чтения хабра, я скоро стану программистом широкого профиля. %) Спасибо вам. и удачи в поддержке ваших начинаний. (чашек, ведер и т.д.)
                    0
                    ух ты как все учить кинулись, так и учеников на всех не хватит. А за статью спасибо, главное не забрасывайте!
                      +1
                      Не буду, честно *ой, экзамен через 4 дня...*
                        +1
                        ну до последней ночи до экзамена еще несколько дней…
                          +2
                          Спасибо Болонскому процессу — экзамен сдать не трудно.
                          0
                          Поздравляю, я уже свой сдал в пятницу ;)
                        +5
                        Так же как и в предыдущих постах, мне не совсем понятна аудитория данного цикла. На то есть несколько причин, на Хабре в большинстве своем люди профессионалы в какой-то своей сфере, или это технологии дотнет, или джава, и многое другое.

                        Для них данный цикл не очень интересен, а новички и люди никогда ни на чем не программировавшие врядли станут серьезными специалистами по этим материалам (я не о компетенции авторов).
                          +6
                          если хоть один человек, чему-то научится, то оно того стоит. Да и автору лишняя тренировка не помешает.
                            +3
                            Автора нелишняя тренировка ждёт на работе на следующей неделе :)
                              +2
                              Но это не повод бросать написание статей.

                              А про полезность: я сейчас как бэ пишу под .NET, но хотелось бы освоить и яву. Другое много усилий прикладывать не охота. Так вот, эти статьи — самое то, что мне сейчас надобно :-)
                            +2
                            Мне кажется, что это может помочь некоторым студентам/старшим школьникам не глядеть в ужасе на незнакомые языки программирования. Чем больше их мелькает перед глазами — тем явнее видны отличия, и тем более незаметными становятся фигурные скобки и точки с запятой.
                              –1
                              Вы знаете вы и правы и нет, все мы опытны в одном, но совсем не разбираемся в другом.
                              Когда я был неопытен я питал все соки с sql.ru, но там форум там задают вопросы, а не предоставляю решения, пособия, how to.
                              И когда я приспосабливаюсь к новой технологии, то хотел бы прочитать о ней в компетентном месте.
                              Если общественность хабра выбирает статью, значит я могу положится на качество поданного материала. А если меня что-то смутит то я увижу нужный ответ в комментариях.
                                +2
                                > Для них данный цикл не очень интересен, а новички и люди никогда ни на чем не программировавшие врядли станут серьезными специалистами по этим материалам (я не о компетенции авторов).

                                С чего то ж нужно начинать, и такие статьи как раз.
                                  +1
                                  Ну я вот профессионал в своей сфере. Программировать умею, но с Java сталкиваться не приходилось. Статья — в самый раз. Единственное, что резануло — «В качестве параметров нам даётся массив строк — использовать их пока не нужно, проигнорируем их.», можно было и написать, что это, тем более, что все догадались.

                                  Если «чашки» пойдут не по пути обучения программированию, а по пути обзора особенностей и применимости языка, то будет здорово.
                                    +1
                                    Учту.
                                    0
                                    Возможно для людей, которые учат в данный момент, не по этим статьям, а по серьезным книгам, типо Core Java, и в данный момент не понятны какие-то моменты в статьях будут более понятны эти моменты, да и социальность всегда поможет понять. Я, как один из таких людей, надеюсь что эти стать будут полезны для меня, спасибо автору, ждем следующих статей.
                                    +3
                                    Капли, ведра, чашки… Что далее? =))
                                      +1
                                      барели =)
                                        +2
                                        Атомы H2O для ASM :)
                                          +1
                                          молекулы ;)
                                        +1
                                        Цисцерны… =)
                                        +3
                                        Не хочет ли кто-то писать статьи про JavaScript? =)
                                        Был бы очень благодарен.
                                        (Извините за оффтоп)
                                          0
                                          Зовите sunnybear например, или кого-нибудь из WSG-Russia.
                                            +2
                                            Если бы знал их лично
                                            +1
                                            Такого плана статьи вы имеете ввиду или нужно именно ведрами подавать? )
                                              0
                                              О, спасибо за ссылку.

                                              Ну, хотелось бы ведрами\каплями\чашками\тарелками =)
                                              Так просто проще будет учиться.
                                                0
                                                Эта статья вообще шикарная. Жаль только подобных больше не видно.
                                                  0
                                                  Ну если у вас есть пожелания, про что можно еще написать о JavaScript в подобном стиле — было бы интересно о них узнать. Потому что я пока не придумал, что бы такого еще написать образовательного (именно про сам язык, а не про фреймворки). Тем более что хорошая статья про замыкания уже тоже есть.
                                                    0
                                                    Честно говоря пожеланий четких нет, так как javascript знаю не очень то хорошо. В статье понравилось, что разобраны тонкости, которые зачастую упускают дабы не пугать людей сложностями. Всю эту информацию пришлось бы в гугле по кускам собирать. Поэтому пишите о том, что важно на ваш взгляд, или о том, где чаще всего совершают ошибки из-за недообразованности. Благодарность людей не заставит себя ждать)
                                              +1
                                              Спасибо, с удовольствие буду читать.
                                                +2
                                                Всем интересующимся Java, уверен, будет полезно сходить на Sun TechDays 2009.
                                                Мероприятие будет проходить 8-10 апреля в Санкт-Петербурге в ЛенЭкспо.
                                                Регистрация уже открыта.
                                                В программе, как обычно, Java всех видов, Open Solaris, большая секция по разработке веб-приложений + JavaFX, NetBeans, xVM Server, MySQL 5.1 и 6.0 и доклады российских разработчиков.
                                                  +1
                                                  А PHP будут измерять тазиками :)
                                                    +1
                                                    лишь бы не решетом :)
                                                      +1
                                                      А можно еще чайниками :)
                                                      +1
                                                      Почти любой код можно мерять горшками…
                                                        0
                                                        ночными %)
                                                          0
                                                          Ну не цветочными же. :)
                                                      0
                                                      /me питонофаг. но поучиться Ънтерпрайзу никогда не поздно. С удовольствием почитаю.
                                                        +1
                                                        Спасибо, продолжайте, с удовольствием почитаю.
                                                          +1
                                                          Шикарно. Недавно решил начать изучать яву потихоньку, ваши статьи будут очень кстати
                                                            0
                                                            Спасибо, как человеку интересующемуся — очень полезно!
                                                              0
                                                              Вот прочитал, и уже возник первый вопрос. Насколько я понимаю, класс в java является синонимом модуля. Более того, только так и можно организовывать код в этом языке. На первый взгляд это хорошо, так как заставит избалованных Delphi и Visual Basic «программистов», привыкших раскидывать свой код по обработчики событий и прочим интересным местам.

                                                              А могу ли я исполнить какой-нибудь код, когда загружаю класс? Например, есть у меня класс настроек, из которого программа будет брать пароли к БД. При импортировании класса он решает в зависимости от текущего имени машины, какие настройки использовать: один на локалхосте, а другие на production-машине. Такое возможно, или обязательно создавать экземпляр класса?
                                                                –1
                                                                Не обязательно создавать экземпляр класса. Он может быть статичным и тогда вы просто должны вызвать его (не создать экземпляр) и какой либо его метод (тоже статичный).
                                                                Модификатор static говорит о том, что класс или метод не пренадлежит данному классу и следовательно может быть вызван без создания экземпляра класса.
                                                                  0
                                                                  Не стоит сравнивать Java с Delphi и Visual Basic. В Java все есть объекты! Абсолютно все (кроме int, byte… но с последними версиями JDK функции переменных переменных берут на себя классы).
                                                                  Что касается вашего вопроса. Что значит загружаю класс? У каждого класса есть конструктор, который выполнится перед созданием экземпляра. Хотя для сложной логики создания класса обычно используют шаблоны (Factory). А почему вы боитесь создавать класс?
                                                                    +4
                                                                    есть такая вещь, статический инициализатор. по спецификации гарантируется, что он исполнится до того, как исполнится какой-либо код из класса.
                                                                      0
                                                                      Боюсь, обязательно создавать класс. Точнее, в данной ситуации лучше вынести конфигурацию в XML.
                                                                      В принципе, в теле класса можно написать статик-блок:
                                                                      static{

                                                                      }

                                                                      но и он будет выполнен когда вы первый раз создадите экземпляр. Но при этом — ровно 1 раз.
                                                                        0
                                                                        Интересно, почему java-программисты так любят xml? =) Может быть, там есть какие-то очень удобные средства работы с ним?
                                                                          0
                                                                          Просто сборка и перезапуск тяжёлого веб-приложения может занять несколько минут, а если вы вынесете что-то в конфигурацию, то пересборка в случае смены конфига вам не понадобится, только перезапуск.
                                                                          И да, есть там удобные инструменты :)
                                                                      –1
                                                                      Один вопрос: в чем фишка явы? Чем он лучше и для чего он заточен? Не холивара ради, но интереса многолетнего.
                                                                      Меня как-то каждый раз напрягает ставить ява-машину, а потом ее включать, ибо в автозапуске держать я не люблю. к тому же весит-то машинка не слабо обычно, где-нить в глуши фиг скачаешь.
                                                                        0
                                                                        На хабре я много раз видел правильный ответ на вопрос «Чем лучше X язык?»
                                                                        Ответ прост. Для каждой задачи есть свой оптимальный метод её решения.
                                                                          0
                                                                          Чудовищно остроумно, но я вроде так и спросил, для чего он заточен, какие задачи решаются на нем оптимально?
                                                                            0
                                                                            На Java оптимально решаются задачи работы одного и того же кода на разных аппаратно-программных платформах.
                                                                            То есть код, написанный на Windows на языке Java будет работать на FreeBSD без перекомпиляции исходников и наоборот.
                                                                            Апплеты будут одинаково выглядеть и выполняться в браузерах IE, Firefox, Opera, Epiphany.
                                                                            Rich-приложения на JavaFX будут одинаково работать на различных операционных системах без переделки.

                                                                            Главное: чтобы стояла JRE свежей версии. Она не так много занимает — каких-то 14МБ в самодостаточном инсталляторе.
                                                                              0
                                                                              На практике это действительно так? Один и от же код (прежде всего GUI) будет работать и под Window, и под Linux, и под BSD, и под MacOS?

                                                                              Просто с теми програмами, с которыми сталкивался, не смотря на то что они на Java, для скачивания предлагаются разные версии. Или это просто обертки-инсталляторы, а JRE сама разберется использовать в путях файлов прямой или обратный слэш, должен ли полный путь содержать букву диска и двоеточие, использовать в конце-концов GDI или, скажем, GTK или вообще иксы напрямую? Если все же надо вводить или разные ветки проекта, или условную компиляцию,, или динамическое определение для разных целевых платформ?
                                                                                0
                                                                                В принципе, должна работать везде, но на практике не всегда так, но обычные вычислительные проги без использования файлов и путей работают, а что-то более серьезное не пробовал.
                                                                                  +1
                                                                                  Одна и та же версия NetBeans из ZIP-архива, скачанного с сайта, работает на Windows, Linux, FreeBSD без перекомпиляции.
                                                                                  Редактор JEdit работает без переинсталляции на разных операционках.

                                                                                  Инсталляционные версии Java-программ предназначены прежде всего для удобного и привычного способа установки, к которому привыкли пользователи той или иной системы.
                                                                                    0
                                                                                    Спасибо, уже лучше, осталось только изучить их исходники на предмет ОС-зависимого кода…
                                                                                  • UFO just landed and posted this here
                                                                                      0
                                                                                      Если использовать интерфейс на Java Swing с родной темой Ocean или Metal (а также Motif), то ничего никуда не расползается — запустить swing-программу можно со специальными ключиками.
                                                                                      Примерно так:
                                                                                      > java -Dswing.metalTheme=steel -jar Java2Demo.jar
                                                                                      — запуститься Java2Demo в старой теме Metal, в которой были представлены старые приложения на любой операционке.

                                                                                      > cd /usr/local/jdk1.6.0/demo/jfc/Java2D/
                                                                                      > java -Dswing.defaultlaf=com.sun.java.swing.plaf.motif.MotifLookAndFeel -jar Java2Demo.jar
                                                                                      — запуститься Java2Demo в теме Gtk Unix-подобной операционной системы.

                                                                                      > java -Dswing.defaultlaf=com.sun.java.swing.plaf.motif.MotifLookAndFeel -jar Java2Demo.jar
                                                                                      — запуститься Java2Demo в теме CDE/Motif на любой операционке.

                                                                                      > cd C:\path\to\jdk\demo\jfc\Java2D\
                                                                                      > java -Dswing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel -jar Java2Demo.jar
                                                                                      — запуститься Java2Demo в теме Windows на Windows-операционке.

                                                                                      Gtk- и Win-темы в Swing эмулируются более менее точно, но не всегда.
                                                                                      • UFO just landed and posted this here
                                                                                      0
                                                                                      Писал под linux'ом прогу — текстовый редактор, под виндой взаимодействие с клавиатурой работало неправильно.
                                                                                        0
                                                                                        С AWT всегда так.
                                                                                        –1
                                                                                        это действительно так, если у программиста прямые руки. условной компиляции в яве вообще нет. ява машина предоставляет доступ ко всем признакам платформы, позволяя использовать в коде, например, свойство File.separator вместо жесткого слэша и т.д.
                                                                                        0
                                                                                        Кроссплатформенность значит. Спасибо.
                                                                                    +2
                                                                                    На Java можно писать web приложения!
                                                                                      0
                                                                                      Вот кстати очень интересный для меня вопрос. Java для разработки web-приложений — это нормальный подход, или лучше все-таки что-то другое (php, .Net, ...)? Ведь для сервера (имею в виду коммерческий продукт) кроссплатформенность обычно не имеет значения — сначала выбирается оборудование, ОС, технологиии и т.д., и потом под них все пишется.
                                                                                      Иными словами, web на java — это «тоже можно» или «очень хороший выбор»?
                                                                                        0
                                                                                        «Web на Java» это больше к J2EE относится. Хотя на JavaSE и Tomcat уже можно писать и держать JSP-странички и сервлеты, даже можно подключить JSF-фреймворк.

                                                                                        J2EE подразумевает применение сервера приложений (JBoss, GlassFish, Geronimo) с контейнером сервлетов (Jetty или Tomcat) и дополнительными сервисами (очереди сообщений, web-сервисы, пулы доступа к базам данны, средства кластеризации и т.д.).
                                                                                          0
                                                                                          т.е. скорее «можно сделать, если очень захотеть»?
                                                                                            0
                                                                                            Слово «очень» здесь лишнее.
                                                                                              0
                                                                                              Скорее можно сделать и нужно тогда когда есть определенные требования… EE — не просто аббревиатура или набор спецификаций от сана. Это сектор реального рынка ПО.
                                                                                            0
                                                                                            Как java разработчик я склоняюсь к «очень хороший выбор». Но остальные «web» языки я знаю только поверхностно. В Java под web дело даже не в кроссплатформенности, а в существовании стандартов J2EE, фреймворков,… которые позволяют использовать ваши наработки не единажды. Т.е. новый проект — это как конструктор, вы прикручиваете готовый функционал к новым задачам.
                                                                                        • UFO just landed and posted this here
                                                                                            0
                                                                                            В первую очередь — масштабируемые Enterprise приложения.

                                                                                            Правда я в последнее время стал использовать Java в качестве «языка на каждый день», но тут уже скорее заслуга IDE (самизнаетекакой :).
                                                                                              +1
                                                                                              Фишка явы для меня — это постоянная уверенность в контроле типов. Как только я что-то делаю не так меня тут же остановит компилятор, а не пользователь через 40 дней, когда я уже и код забуду.
                                                                                                –1
                                                                                                чем она луче чего? задумывалась она как язык для сетевых устройств, с возможностью динамической загрузки кода из сети и полной переносимостью.
                                                                                                при сохранении этих свойств, сейчас это уже универсальная платформа, с десятками языков под нее.
                                                                                                в силу доминирования на декстопах винды и того факта, что лет 10 назад на них было мало памяти, ява получила самое широкое распространение на серверах, где все ее плюсы лучше всего играют.

                                                                                                «включать» ява машину не требуется, она сама :) весит Version 6 Update 11 аж целых 7 MB (это среда выполнения, для программирования надо немного другой наборчик)
                                                                                                  0
                                                                                                  >В первую очередь — масштабируемые Enterprise приложения.
                                                                                                  Вот это я не совсем понял.

                                                                                                  >Фишка явы для меня — это постоянная уверенность в контроле типов.
                                                                                                  >задумывалась она как язык для сетевых устройств, с возможностью динамической загрузки кода из сети и полной переносимостью.
                                                                                                  Спасибо, туман-таки рассеивается.

                                                                                                  >«включать» ява машину не требуется, она сама :) весит Version 6 Update 11 аж целых 7 MB (это среда выполнения, для программирования надо немного другой наборчик)
                                                                                                  Насколько я понял в винде она в автозапуск вписывается, откуда я ее убираю, поэтому приходится-таки включать самому, но не в этом суть, к слову просто сказал. И то что предлагают скачивать вроде было в последний раз мегабайт 15-20, может конечно есть и какие-то минимальные библиотеки, специально не искал.

                                                                                                  >Фишки Java видны программистам, а не пользователям.
                                                                                                  Java-человеки, я же написал в вопросе «не холивара ради», что за нервные реакции?! Открывая статью «для начинающих», я надеялся увидеть какое-то вступление, вроде что такое java, как появилось и для чего оно собственно. Ну, ладно, раз такого нет решил спросить, а вы тут рвете и мечете вековыми мудростями и остротами.
                                                                                                    –1
                                                                                                    >>масштабируемые Enterprise приложения.
                                                                                                    >Вот это я не совсем понял.

                                                                                                    это такая хрень, которая что-то там обрабатывает в большом количестве и если с ресурсами начинают проблемы, можно добавить еще сервачок, и еще… а код всё тот же.

                                                                                                    >Насколько я понял в винде она в автозапуск вписывается, откуда я ее убираю, поэтому приходится-таки включать самому, но не в этом суть, к слову просто сказал. И то что предлагают скачивать вроде было в последний раз мегабайт 15-20,

                                                                                                    начиная с 6й явы они постарались минимизировать объем закачки.
                                                                                                    касаемо автозагрузки — с 6й явы там кусок библиотек для ускорения запуска приложений. разница заметна, когда вы постоянно используете ява-приложения в режиме запустил-вышел. т.е. когда эта штука в автозапуске, то вполне можно яву для батников использовать и прочих мелких утилиток. а если идет работа с 1-2 приложениями, которые постоянно запущены, типа, eclipse + Tomcat то это почти никакого выигрыша не дает
                                                                                                0
                                                                                                А почему вы не захотели писать в блоге Стартап «Программист»? Как я понял он был создан для того, чтобы не захломлять основные блоги и те, кто хочет читать — читал, а те кто не хочет — не читал. Я не прав? Кто что думает по этому поводу? Стоит ли выносить серии статей по обучению в отдельный блог?
                                                                                                  0
                                                                                                  Стартап «Программист» — это по-моему просто два слова, волею случая оказавшиеся рядом друг с другом, и почему-то так называется блог :)
                                                                                                    0
                                                                                                    Ну когда то и слово Хабрахабр не имело смысла? :)
                                                                                                      0
                                                                                                      Есть такой момент :) Но там слово стартап совсем не уместно по-моему…
                                                                                                    0
                                                                                                    Я не смог в него написать.
                                                                                                  • UFO just landed and posted this here
                                                                                                      0
                                                                                                      Как раз на днях подумывал а не поучить ли мне джаву. Вряд ли буду писать на серьезном уровне, но хотелось бы уметь разбираться на уровне, когда что-то более сложное и непонятное можно рыть в мануалах и понимать чем речь =)
                                                                                                        +1
                                                                                                        Ява живее всех живых и еще долго будет держать свои позиции. Так что урок в тему ;)
                                                                                                          0
                                                                                                          Опечатка: «За это отвечают тесты, которые Java-машины должна проходить перед выходом в свет».
                                                                                                          Кстати, не только сами машины (коих больше, чем 3 разных типа) проходят тесты, но и вся стандартная библиотека.
                                                                                                          Думаю стоит указать, что качать нужно именно JDK. В обычной поставке нет компилятора.
                                                                                                          А ещё можно заметить, что цифра 2 больше не используется, а подразумевается. Пишут просто Java SE 6 (а не Java 2 SE 1.6). Ну и пока что мобильная версия базируется на 1.4, так что она тоже актуальна до сих пор.

                                                                                                          Забавы ради можно упомянуть такие штуки как JRuby, Jython и пр. И, конечно, что всё бесплатно и во многом даже OpenSource.
                                                                                                          +2
                                                                                                          Спасибо, очень здорово что пишут такие статьи)
                                                                                                          Только просьба, перенесите из блога Javs в Стартап программист, и собирайте все ведра, тазики, чашки и капли там, так удобнее отслеживать и искать среди разных ведер, чашек и т.д.
                                                                                                          Спасибо еще раз)
                                                                                                            +1
                                                                                                            Согласен, в блоге «Стартап „Программист“» такие статьи отслеживать гораздо удобнее. Присоединяюсь к просьбе о переносе.
                                                                                                            +6
                                                                                                            по размеру — в чашке Javы помешается ведро C#…
                                                                                                            … но hello world на руби помещяется вообще в каплю :)
                                                                                                              0
                                                                                                              Мне вот интересно, откуда пришла привычка писать public static, а не static public, ибо внимание то именно на static обращать в первую очередь логичнее?
                                                                                                                +2
                                                                                                                Наверно многие стараются придерживаться соглашений Code Conventions for the Java Programming Language, чтобы не напрягать ни себя, ни других в чтении кода.
                                                                                                                  0
                                                                                                                  Я в жабе сам так пишу по этой причине. Но откуда у этого ноги?
                                                                                                                  Просто это мне кажется немного нелогичным )
                                                                                                                  +2
                                                                                                                  Видимо из С++
                                                                                                                  class process {
                                                                                                                  public:
                                                                                                                  	static void reschedule();
                                                                                                                  };
                                                                                                                  
                                                                                                                  +2
                                                                                                                  Всё-таки правильнее будет:
                                                                                                                  public class HelloWorld {

                                                                                                                  }
                                                                                                                  Потом, когда будете объяснять смысл пакетов в Java, не забудьте объяснить, почему. ;)
                                                                                                                    0
                                                                                                                    В данном контексте не вижу существенных отличий.
                                                                                                                    0
                                                                                                                    Будут статьи за ME,EE?
                                                                                                                      0
                                                                                                                      За ME обещаю, за EE — нет, дело почти не имел.
                                                                                                                      Тем не менее, это утверждение с двойным дном. Дело в том, что большая часть серверного программирования работает на SE — то есть создать сервлет, раздавать JSP, соединяться с БД — умеет и SE.
                                                                                                                        0
                                                                                                                        Тут вы не совсем правы.
                                                                                                                        сервлеты и JSP (которые представляют из себя те же сервлеты по сути) — это часть Java EE см.
                                                                                                                        java.sun.com/products/servlet/index.jsp

                                                                                                                        javax.sql.* — это действительно относится к SE
                                                                                                                          0
                                                                                                                          Тем не менее эти части так же включены по умолчанию в J2SE, поэтому мы действительно можем создавать сервлеты, не используя все возможности J2EE.
                                                                                                                            –1
                                                                                                                            что, так тяжело сначала посмотреть API, а потом такими заявлениями бросаться?
                                                                                                                            _сервлеты_ не являются частью J2SE.
                                                                                                                              0
                                                                                                                              С чего вы взяли что сервлеты включены в Java SE? Ни в jre ни в jdk их нет. Они поставлятся с серверами приложений. Glassfish, JBoss и пр. Также Tomcat реализует часть Java EE являясь контейнером сервлетов(ну и JSP).
                                                                                                                                0
                                                                                                                                Признаться, удивлён. В своё время коллеги по работе заверили, что работа с сервлетами — это именно J2SE.
                                                                                                                        0
                                                                                                                        Первый раз услышал что в java теперь jit. Не могу нагуглить информацию на эьту тему. Есть ли jit в sun java машине, включён ли он по умолчанию? Начиная с какой версии?
                                                                                                                          +1
                                                                                                                          Называется это HotSpot. Включен по дефолту с версии 1.3, после того как Sun купили компанию его разработавшую. Это где-то 2000-й год.
                                                                                                                            +1
                                                                                                                            Один из первых JIT был в MS Java. Сама MS JVM считалась до выпуска HotSpot одной из самых производительных java-машин на Windows.
                                                                                                                              +1
                                                                                                                              Насколько помню,
                                                                                                                              Только Sun подала в суд на MS из-за того, что некоторые ключевые вещи интерпретировались не по спецификации, а тем не менее это все называлось JVM. (Sun выиграла процесс.) Сложно поэтому называть старую реализацию от MS виртуальной Java машиной.
                                                                                                                                +2
                                                                                                                                Да. Сулились из-за не реализованной JNI-спецификации (в MS JVM её заменяли COM-вызовы).
                                                                                                                                Так же проблемы были с неполностью реализованной RMI-подсистемой, с которой программы могли общаться только по протоколу COM/DCOM.

                                                                                                                                Кстати, библиотекой визуальных компонентов Windows Foundation Classes (WFC) занимался Андреас Хайлсберг, уволившийся из Borland и до этого разработавший архитектуру библиотеки Delphi 3.0 VCL. В то время у Sun не было аналога этой библиотеки — была убогая AWT — JFC/Swing была в проекте.
                                                                                                                            –4
                                                                                                                            И нахрена это надо??? В инете мало статей по яве? На том же сане доков тонны. Кармы захотелось?! Так напишите что-нибудь действительно полезное и оригинальное, а не миллионный хелло ворд.
                                                                                                                            Скоро, наверное, тут появятся статьи по завязыванию шнурков, нажатию на кнопку Пуск/K и тому подобное.
                                                                                                                              0
                                                                                                                              Я бы про haskell почитал еще, есть знатоки? напишете?
                                                                                                                                0
                                                                                                                                Реквестирую статьи про coq
                                                                                                                                0
                                                                                                                                Очень интересная тема, с нетерпением жду продолжения :)

                                                                                                                                Один вопрос: тут упомянулись 3 IDE. У меня стоит IntelliJ Idea, поскольку мне как .net'чику ближе решарперовская раскладка.

                                                                                                                                Но все же любопытно какая IDE сейчас наиболее часто используется для создания сложных приложений под веб на Java?
                                                                                                                                  +1
                                                                                                                                  Наиболее часто используются до этого момента идейка и Eclipse. Адептов одного обычно тошнит от другого.
                                                                                                                                  Развиваются NetBeans, которые обещают стать очень неплохой средой.

                                                                                                                                  Есть еще много сред, но, на мой взгляд, по распространенности, удобству, количеству плагинов их можно не упоминать.
                                                                                                                                    0
                                                                                                                                    Наверное еще стоит упомянуть, что Eclipse бесплатный, в отличие от IDEA.
                                                                                                                                      0
                                                                                                                                      NetBeans гораздо продвинутее Eclipse в плане поддержки новейших технологий Java.
                                                                                                                                        +2
                                                                                                                                        Апельсины гораздо вкуснее курицы.
                                                                                                                                      +1
                                                                                                                                      Сейчас пользуюсь IDEA. До этого NetBeans.
                                                                                                                                      Но Идея как-то мне ближе + шакарнейшие возможности рефакторинга.
                                                                                                                                      0
                                                                                                                                      Ну наконец то и по Java повился простой, ненавязчивый «мануал» так сказать! Я сам начинающий Java-изучатель, а в нэте особо ничего интерактивного накопать не удалось( java конференция в гуглу — мертва, разве что в ЖЖ :)
                                                                                                                                      Вобщем СПАСИБО БОЛЬШОЕ АВТОРУ за начинание; надеюсь продолжение будет :)
                                                                                                                                        0
                                                                                                                                        Уже есть :)
                                                                                                                                          0
                                                                                                                                          Очень плохо искали. Попробуйте на офф сайте.
                                                                                                                                          0
                                                                                                                                          задам ньюбский вопрос, не пинайте сильно. Вот три статьи о языках, о питоне, яве и си шарп. Все три выполняются виртуальной машиной, как я понял. Тогда в чём причина создания 3х языков?
                                                                                                                                            0
                                                                                                                                            Вот смотрите, есть грузовики, легковушки, и велосипеды. Все три ездят по одним и тем же дорогам. Так в чём же причина создания трёх средств передвижения?
                                                                                                                                              +1
                                                                                                                                              кратко можно ответить так
                                                                                                                                              google, sun и microsoft :-))

                                                                                                                                              в реальности же все немного сложнее, питон, скажем так, вырос (хотя и не дорос пока)
                                                                                                                                              а C# это перелицованый Visual J++, который сан зарубил майкрсофту через суд за попытку привязать java к windows

                                                                                                                                                0
                                                                                                                                                Кстати, хочу обратить внимание собравшихся на такую чудную вещь как Groovy — язык на основе java библиотек с идеологией синтаксиса ruby/python
                                                                                                                                                0
                                                                                                                                                на самом деле, востребованных языков, управляемых вритуальной машиной гораздо больше,
                                                                                                                                                как минимум надо добавить php (который тоже компилируется в свой байт код перед выполнением), ruby и erlang
                                                                                                                                                0
                                                                                                                                                Статьи буду читать с удовольствием. Хотелось бы еще услышать советы по хорошей русскоязычной документации по яве.
                                                                                                                                                  0
                                                                                                                                                  Совет один — learn english.
                                                                                                                                                  0
                                                                                                                                                  Спасибо тебе, автор! На Java не программирую, но теперь побалуюсь чисто для себя в свободное время. Так что все будущие посты буду однозначно 'избирать'.
                                                                                                                                                    0
                                                                                                                                                    Статья супер, как раз в самый раз)))) Начинаю изучать!

                                                                                                                                                    Only users with full accounts can post comments. Log in, please.