Останнім часом проектую і розробляю десктоп додаток на Java. Після декількох років розробки веб / мобільних рішень було дуже цікаво повернутися до десктопу. Зараз, в епоху розквіту різних веб-фреймворків (тільки серед Java: Spring MVC, GWT, JSF, Tapestry, Wicket, Vaadin і т.д.), для розробки десктопних додатків на Java не такий вже великий вибір.
На мій погляд, на даний момент є всього три більш-менш популярних підходу:
0. Чистий Swing / JavaFX
1. Використовувати Eclipse RCP (Rich Client Platform)
2. Netbeans Platform
Оскільки з самого початку було зрозуміло, що належить розробити складну систему з кілька десятків різних форм, безліччю складних таблиць з угрупованням / сортуванням даних, а в перспективі графіки, схеми та інші компоненти, то природно в мене не було бажання використовувати чистий Swing / JavaFX, а скористатися якою-небудь з платформ.
враження
У підсумку, через більш як місяць розробки, можна підвести якісь проміжні підсумки і загальні враження.
2. Про навчальні матеріали. Гарна документація по API.
На DZone є шпаргалки по Netbeans Platform.
На сайті NetBeans можна знайти величезну кількість посилань на різні навчальні матеріали. Розглянуто кілька різних стандартних додатків: "будуємо додатки для роботи з БД", "рисовалка схем / діаграм" і т.д. В цілому підручники на сайті Netbeans багатослівні і якщо чесно досить нудні. зате докладні. Іншими словами багато "присипляючого" чтива, раджу поповнити запаси кави перед початком навчання.
В цілому мені платформа подобається, але не можу сказати, що відразу все стало виходити. Десь більше тижня пішло на те, щоб зрозуміти зв'язку базових об'єктів, модульної структурою.
Більш того поки не можу сказати, що на всі 100% розібрався з внутрішньою архітектурою. Проте, найголовніший плюс в тому, що можна розкопати по кроках як і що працює всередині насправді. Грубо кажучи відкрити вихідні, подивитися реалізацію, документацію і зрозуміти що з чим пов'язано або запустити під дебагом.
Для порівняння, з Eclipse у мене так і не склалася чітка схема як в ньому все влаштовано. Будь-які зміни і доопрацювання вимагали величезних зусиль і витрачати години пошуку в інтернеті відповідних прикладів / рішень.
Іншим великим плюсом в Netbeans - використання стандартного Swing-a. При наявності досвіду роботи зі стандартними Java графічними компонентами, можна взагалі ніяк не залежати від API Netbeans при розробки якогось окремого компонента, зробити самому складні рішення на Swing-е і потім його впровадити вже в кінцевий продукт.
По ходу роботи накопичилися деякі моменти і факти, про які хотілося згадати.
0. Ця порада стосується не тільки розробки під Netbeans, а взагалі будь-яких проектів. На етапі узгодження бізнес-вимог явно позначити і затвердити системні вимоги до обладнання, на якому буде використовуватися додаток. Потрібно для того, щоб виключити запуск програми на древніх нетбуках. Думаю багато, хто працював на Netbeans знає, що для комфортної роботи на ньому бажано мати гарне залізо.
1. Про мaven. Я використовую його по звички. Насправді не рекомендую. тому є певні складності. Цілком можна використовувати базову структуру, а оскільки в Netbeans проекти будуються вже багато років на базі ant-а. то з автоматичною збіркою з командного рядка проблем в будь-якому випадку не буде. За великим рахунком, різниця ant або maven не така суттєва в порівнянні "якийсь не зрозумілий .project-файл" або maven.
Якщо все-таки плануєте використовувати Maven, то головне в першу чергу потрібно розібратися, що таке cluster і suite в термінах Netbeans Platform.
Звернути увагу на параметр "netbeans.installation".
2. Цікавий компонент Outline (древо-таблиця).
Реалізація древо-таблиці (TreeTable) є ще в JavaFX, але він планується у вісімці, а вона ще не випущена. У той же час Outline вже готова і нею багато хто використовує. Тестував приблизно на древо-таблицях сумарно з 70 стовпцями x 1000 рядків з глибиною дерева в три рівня.
Отрісовка помітно не гальмувала, скроллінгом плавне. Спостерігалися невеликі проблеми з відображенням виділених рядків при скроллінгом, після переписування рендерера проблема зникла.
3. Компонент PropertySheet - готовий "з коробки" компонент для редагування бінов (JavaBean).
4. Важливо відразу зрозуміти і прочитати про TopComponent, Lookup, а також про інші ключові компоненти (вони наведені в шпаргалці від DZone).
5. Остання порада - набратися терпіння. API досить багате, багато своїх концепцій і підходів.