Метка: netbeans

  • Про настройку шрифтов в IDE (Netbeans) под Linux.

    Какой самый лучший шрифт для программиста?
    Каждому своё.
    Одним нравятся округлые очертания, другому наоборот тонкие и острые. Поэтому выбор шрифта — дело вкуса, хотя конечно есть базовые требования.
    Самое главное и очевидное — шрифт должен быть моноширинным, т.е. все символы должны быть одной ширины. Это очень важно для того, чтобы сохранить структуру кода, т.к. иначе будут плыть все отступы и исходный код будет плохо читаться.
    Если человек пришел в программирование с дизайнерским/типографским прошлым, такой шрифт его может раздражать. Моноширинные шрифты не самые приятные для чтения, хотя их используют не только программисты-техногики, но и люди искусства.
    Например, если верить википедии, в западной театральной и кинематографической традиции сценаристы используют шрифт Courier-12. Одна страница такого сценария длится примерно одну минуту. Вроде это какой-то даже у них стандарт де-факто в отрасли.

    Кроме моноширинности, при выборе следует обратить внимание на следующее:
    – Цифра 0 (ноль) должна отличаться от буквы O.
    – Цифра 1 (один) должна отличаться от буквы l (маленькая L).

    Что касается меня, то сейчас я использую шрифт Consolas.

    Специфика Linux.

    На момент написания этой статьи у некоторых пользователей Linux (Ubuntu) есть определенное недовольство качеством отображения шрифтов в IDE.
    Итак, что можно попробовать сделать.

    Во-первых, я ставлю набор микрософтовских шрифтов:

    $sudo apt-get install ttf-mscorefonts-installer
    

    Во-вторых, особо чувствительные к шрифтам могут поставить Infinality.

    В-третьих и самое главное. Это не сильно помогает, т.к. на момент написания этой статьи в Java (точнее в её графической подсистеме AWT/Swing) есть какие-то проблемы с красивым отображением шрифтом в Ubuntu. Другими словами проблема актуальна для Netbeans и Android Studio.

    Единственное нормальное решение я нашел здесь askubuntu.com.
    Итак чуть более подробный пересказ, что нужно делать.
    (далее…)

  • DCE VM + HotSwap

    Горячая замена.

    Исходной предпосылкой было как-то упростить процесс разработки/отладки. В некоторых ситуациях, например когда запуск-перезапуск приложения или теста занимает продолжительное время, очень удобно пользоваться возможностью подправить логику работы уже запущенной программы.
    В поисках решения наткнулся на довольно занятное решение – Dynamic Code Evolution VM. Данная виртуальная машина является результатом работ проведенных в рамках исследовательского проекта Институтом системного программного обеспечения им. Иоганна Кеплера в г. Линце (Австрия).

    Если грубо описать полученный результат – это специальная “пропатченная” Java VM, которая позволяет на лету править классы в работающей машине. Главная плюшка – если обычно при дебаге вы можете “на горячую” менять содержимое метода, то в DCE VM можно еще и добавлять/удалять методы и поля в классе.

    К сожалению с установкой DCE VM у меня не заладилось с самого начала. Инсталлятор не сработал, в итоге пришлось просидеть полночи в попытках заполучить эту чудную VM. К решению этой задачи пробовал подступиться с разных сторон. Пытался собрать исходники. Собирать пришлось из под cygwin-а (в очередной раз пожалел, что сейчас у меня рабочая операционка не Linux). Потом возникли сложности с установкой “Microsoft SDKs Windows v7.1”, который почему-то не хотел устанавливаться. В итоге, правдам и неправдами, перед самым рассветом, перерыв кучу ссылок в интернете различными кривыми путями мне удалось стать счастливым обладателям этой машинки. Конечно сейчас, оглядываясь назад, у меня создается впечатление, что на самом деле я сделал кучу лишних шагов и про установку DCE VM информации более чем достаточно, главное внимательно читать инструкцию.

    Мои эксперименты.

    После того как всё настроил Hot Swap заработал сразу на:

    • Простых Java SE проектах.
    • Java Web проектах под Apache Tomcat.

    Схема работы простая. Запускаем под дебагом → Делаем изменения → Жмем Apply Changes.

    apply_code_changes

    Если речь идёт о более экзотических случаях, например разработка Rich приложений на Netbeans Platform – то горячая замена у меня не заработала. Чуть позже у меня появилась гипотеза, что возможно это связано с тем, что у Netbeans Platform свой ClassLoader. Возможно гипотеза неверна и дело в настройках, думаю в свободное время посмотреть более внимательно исходники проекта и утилит, которые идут вместе с ним. (далее…)

  • Java и десктоп приложения. Впечатления от Netbeans Platform.

    Последнее время проектирую и разрабатываю десктоп приложение на Java. После нескольких лет разработки веб/мобильных решений было очень интересно вернуться к десктопу. Сейчас, в эпоху расцвета различных веб-фреймворков (только среди Java: Spring MVC, GWT, JSF, Tapestry, Wicket, Vaadin и т.д.), для разработки десктопных приложений на Java не такой уж большой выбор.
    На мой взгляд, на данный момент есть всего три более-менее популярных подхода:

    0. Чистый Swing/JavaFX
    1. Использовать Eclipse RCP (Rich Client Platform)
    2. Netbeans Platform

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

    Первым делом были мысли использовать все-таки Eclipse (в прошлом у меня был опыт работы с ним). Конечно впечатления были не самые лучшие, но прошло больше 8 лет с тех пор как я имел с ним дело и многое могло измениться. Просмотрел изменения и одновременно начал опрашивать друзей, писал ли кто-нибудь в последнее время для Eclipse RCP. В итоге про Eclipse я услышал мало хорошего. Если резюмировать, главный вывод, который можно было сделать после бесед с друзьями — Eclipse RCP использовать можно, но скажем деликатно, без особого удовольствия. В конечном счете я решил переключиться на Netbeans, к которому присматривался уже давно.
    Забегая вперед скажу, что в целом мне платформа пока нравится. (далее…)

  • Мои хинты для Netbeans 7

    Недавно нужно было заново установить Netbeans 7.
    Вот некоторые действия, которые всегда приходится делать после установки “коробочной” версии,
    а именно: поддержка Scala, интерфейс на английском и quick file chooser.

    Установка

    Заходим на официальный сайт: netbeans.org
    Нажимаем на [Download FREE] и переходим на ссылку http://netbeans.org/downloads/index.html
    Скачиваем, устанавливаем и запускаем.

    Итак, что приходится делать:

    0. Обновления.

    На всякий случай проверить наличие обновлений:
    Меню → Help → Check for Updates

    1. Русский → English

    Чтобы вернуть обратно английский нужно:
    – Найти файл “netbeans.conf” (для Windows-пользователей: он должен находится где-то здесь – “C:\Program Files\NetBeans 7.0\etc\” )
    – Указать в настройках –locale en:US

    netbeans_default_options="МНОГО_БУКВ   --locale en:US"
    

    UPD: Почистить домашнюю папку “.netbeans/7.x” перед сменой локали, а то “Службы” и некоторые другие сообщения могут остаться на русском. Предварительно сделайте бэкап.

    2. File Chooser

    Сразу же установить плагин Quick File Chooser:
    Меню → Тools → Plugins → Available Plugins
    Это намного более шустрый и удобный (на мой взгляд) диалог для выбора файлов.

    3. Scala

    Ставим plugin для работы со Scala.
    Для версии 2.8.x: http://plugins.netbeans.org/plugin/36598/nbscala-2-8-x
    Подробнее можно прочитать на вики нетбинсов:
    http://wiki.netbeans.org/Scala
    или на портале с плагинами:
    http://plugins.netbeans.org/

  • Main args, netbeans

    Пара простых вещей (про аргументы командной строки + Java/Scala и чуть-чуть про NetBeans)

    Самый популярный и набивший оскомину пример HelloWorld встречается, наверное, уже во всех учебниках по программированию:

    // Пример из туториала: http://download.oracle.com/javase/tutorial/getStarted/application/index.html
    class HelloWorldApp {
        public static void main(String[] args) {
            System.out.println("Hello World!"); // Display the string.
        }
    }
    

    Здесь String[] args — аргументы командной строки.
    Например:
    java HelloWorldApp 1 2 означает, что args будет равно {“1”, “2”}.

    Рассмотрим как работать с этими аргументами.
    Если передается всего один аргумент (например, “debug”), то все очень просто — можно подсмотреть пример из туториала: cmdLineArgs.

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

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

    В том случае, если аргументы не такие сложные и не слишком простые, а что-то среднее, то тянуть для этих целей дополнительную библиотеку нет никакого смысла. Например, если нужно передать что-то вроде: “-x -size 1024 -v”.
    Обычно это бывает, когда требуется небольшая, почти “одноразовая” программа…

    Многие настолько не любят писать разбор таких аргументов, что лепят все параметры в системные свойства (java … -Dfoo=”some string”), чтобы потом дергать их через System.getProperty().
    Это конечно удобно, но не всегда нормально.

    Проще написать разбор обычными стандартными средствами:

    public class App {
    
        public static void main(String[] args) {
            boolean v = false, x = false;
            int size = 0;     
            for (int i=0;iSnippet: Match Arguments.
    Что-то очень сложное – подключаем сторонние библиотеки для разбора аргументов командной строки (ту же апачевскую или jopt).
    В том случае, если что-то среднее, то можно написать на чистой Scala:

    object App  {
      def main(args:Array[String]) = {
          var v = false; var x = false; var size = 0   
         ("" +: args :+ "") reduceLeft ( (i, j) => {
            i match {
              case "-v"     => v = true
              case "-size"  => size = j.toInt
              case "-x"     => x = true
              case _ =>
            }; j
         })
        println("v =" + v )
        println("x = " + x)
        println("size = " + size)
       }
    }
    

    Пару слов про reduceLeft. По сути этот тот же foldLeft, только начинается с первого элемента коллекции. Подробнее можно почитать в Scala API по работе с коллекциями.

    Про другую известную многим фишку, о которой хотел рассказать — макросы в NetBeans-ах.
    Точнее, про самый популярный макрос - debug-var. Вызывается по нажатию: Ctrl-J D.
    Вообще макросы в нетбинсах есть уже много лет, по-крайне мере, когда я только начинал использовать нетбинс (3.* версии), они уже там были.
    Например, для Scala можно сделать макрос, который будет вставлять в код: println("var=" + var)

    Настроить можно здесь:
    Tools -> Option -> Editor -> Macros

    Про другие полезные макросы можно почитать здесь

  • Читерство в NetBeans. Ввод и использования мат. символов и букв греческого алфавита.

    Оригинальная идея взята из поста Gabriel’s software development blog. Статья довольно старая, опубликована еще в прошлом году .

    Если коротко:

    def √(x:Double)=Math.sqrt(x)
    def ∑(r:Range)(f:Int => Int)=r.foldLeft(0)(_+ f(_))
    def ∏(r:Range)(f:Int => Int)=r.foldLeft(1)(_* f(_))
    val s= ∑(1 to 100)(x=>√(x))
    

    Это обычный Scala код! Выглядит он прикольным, потому что мы используем знакомые всем со школы/института символы. Но как сделать так, чтобы было удобно вводить эти символы для меня было загадкой.

    В итоге недавно случайно придумал как это можно сделать просто и удобно средствами IDE, а точнее в NetBeans.

    Я вбил все нужные мне символы в Code Templates (Tools → Options → Editor → Code Templates) и сделал два макроса для [Alt+<] = “←” и [Alt+>] = “⇒”.

    Как это работает можно посмотреть здесь:

    То есть вы вводите например alpha и жмете [Tab], в результате в код вставляется α. Самое главное, это настраивается только для нужного языка (в частности Scala), таким образом это не мешает в работе с другими языками. Также если вы хотите написать просто alpha, без преобразования, вы просто НЕ нажимайте [Tab] и всё!

    Самое главное! Исходники должны быть в UTF-8 (ну или другой юникодной кодировке)!
    P.S.: На самом деле вбивать весь греческий алфавит довольно скучное занятие, можно найти файл вроде этого:

    C:\Documents and Settings\<USER_NAME>\.netbeans\6.9\config\Editors\text\x-scala\CodeTemplates\org-netbeans-modules-editor-settings-CustomCodeTemplates.xml

    и сгенерить туда все аббревиатуры.

    Вот пример моего файла – CustomCodeTemplates.zip. Внимание! Это только пример, возможно он Вам не подойдет.
    Будьте аккуратны, перед обновлением сделайте резервную копию!

  • GWT 2.0 + GXT (Ext GWT) + Maven

    1. GWT (Google Web Toolkit, произноситься: /’gwit/). На момент написания поста текущая версия  – 2.0.3.  Загрузить можно с официальной страницы GWT – http://code.google.com/intl/ru/webtoolkit/download.html.

    Вкратце механизм работы GWT можно описать так.  Исходный код пишется на Java, затем он транслируется в JavaScript,  в результате получаются несколько версий программ для разных браузеров (Firefox, IE, Safari, Google Chrome, Opera 9.0). Полученный JavaScript код неплохо оптимизирован – название переменных и методов сокращенны, убраны комментарии и лишние пробелы. В итоге получается его естественная обфускация.  (Пример кусочка полученного кода: function Y7(a){W7();LE(a);a.Vb=NOc;return a} ).

    После выхода версии  GWT 2.0 появилась возможность разбивать полученный JavaScript код (runAsync)  на отдельные файлы, которые затем загружаются асинхронно по мере надобности.  Так уменьшается размер первоначального скрипта и как следствие время загрузки и запуска приложения.

    Подробное описание есть на официальном сайте GWT.

    (далее…)

  • Чтобы заработал enhancer от DataNucleus нужно в NetBeans
    Project Properties -> Build / Compiling -> Turn Off “Compile on Save”

  • Scala и UTF-8

    При работе со Scala в Netbeans возникают проблемы с русскими буквами.
    Нужно
    1. *.scala должны быть в UTF-8
    2. в C:\Program Files\NetBeans 6.1\etc\netbeans.conf
    добавить к параметру netbeans_default_options значение: -J-Dfile.encoding=UTF-8

  • Scala и Netbeans

    для того чтобы заработала scala в нетбинсе нужно указать в
    “C:\Program Files\NetBeans 6.1\etc\netbeans.conf”

    netbeans_default_options= .. -J-Dscala.home=< Путь_к_скале>

    сам плагин можно скачать здесь