Ìèíà è ñåìèíàðà, ïîñâåòåí íà NetBeans è Swing.
Roman Strobl íè çàïîçíà ñ íîâîñòèòå â NetBeans 6.0, êîéòî ñêîðî òðÿáâà äà ñòàíå ôèíàëíà âåðñèÿ äî êîëêîòî ðàçáðàõ. Ñ êðàòêà øåãà ëåêòîðúò ïðîâåðè êîëêî îò ôèçèîíîìèèòå â çàëàòà ðàçáèðàò àíãëèéñêèÿ ìó, ñëåä êîåòî çàïî÷íà äà íè äåìîíñòðèðà ñàìîòî IDE. Ñúùî òàêà íàáëåãíà è íà ôàêòà, ÷å NetBeans íå å ñàìî åäíî IDE, à ïëàòôîðìà, êîÿòî ìîæåø äà èçïîëçâàø çà ðàçðàáîòêà íà ñâîè ïðèëîæåíèå áëàãîäàðåíèå íà àðõèòåêòóðàòà è ëèöåíçà. Çà ïðèìåð äàäå ôîòîàëáóì è ïðèëîæåíèå, èçïîëçâàùî ñâîáîäíèòå çà ïîëçâàíå êàðòè íà NASA : “No, that is not Google Maps”, êàêòî êàçà Ðîìàí. 😉 Ñëåä êîåòî äåìîíñòðèðà ðåëåôà îêîëî Ñîôèÿ è êàêâà å ãëåäêàòà îò õîòåëà ìó. Äà, ïðîåêòà World Wind, âêëþ÷âàù êàðòèòå íà NASA, êàêòî è ïðåäîñòàâåíîòî Java SDK, êàòåãîðè÷íî ñà â ñïèñúêà ìè ToTest!
Âúïðîñúò êîëêî ÷îâåêà â çàëàòà ïîëçâàò NetBeans ïðåäèçâèêà ðåàêöèÿ ñàìî ó åäíà øåïà õîðà, êîåòî èçíåíàäà íåïðèÿòíî Ðîìàí – â Ãúðöèÿ, ïî íåãîâè äóìè, îêîëî 50% îò ïðèñúñòâàùèòå íà ïðåçåíòàöèÿòà ïîëçâàëè Sun-ñêîòî IDE. Äîêàòî ïðè íàñ ïðåîáëàäàâàøå Eclipse. Òîâà äîâåäå äî ìíîæåñòâî ñðàâíåíèÿ ñ Eclipse, çàïîçíàâàíå ñ ôóíêöèîíàëíîñòòà “Import Eclipse Project”, ãîòîâ ïðîôèë ñ êëàâèøíè êîìáèíàöèè “Åclipse” è ò.í. 😉 Åäèí êîëåãà îò çàëàòà ïðåäëîæè âúâåæäàíå è íà “Export to Eclipse Project”, êîåòî ìíîãî ìå îçàäà÷è – åäâàì ñà õâàíàëè õîðà, ùî äà ãè óëåñíÿâàò äà ìèãðèðàò êúì äðóãè? 😉 Íî èäåÿòà áåøå äîáðà – àêî ñè â åêèï, ðàáîòåù îñíîâíî ñ Eclipse, à èñêàø äà ðàçðàáîòâàø íà NetBeans, áè áèëî óäîáíî äà ìîæåòå ëåñíî äà ñè ïðåõâúðëÿòå ïðîåêòèòå. Ðîìàí äàäå èäåÿòà äà ñå ïîëçâà ñúçäàâàíå íà ïðîåêò ñ Ant ñêðèïò, êîéòî Ant ñêðèïò ïîñëå äà ñå èçïîëçâà çà ñúçäàâàíå íà ïðîåêò â Eclipse.
Õàðåñà ìè, ÷å ïðåäëàãàò ðàçëè÷íè êîíôèãóðàöèè íà ñðåäàòà â çàâèñèìîñò îò òîâà äàëè èñêàø âñè÷êè îïöèè èëè ùå ðàçðàáîòâàø ñàìî J2SE, C++, Ruby, J2EE, êàòî ÷èñòèÿ J2SE âàðèàíò å ñàìî 21 Ìá çà ñâàëÿíå! Ìîæå è äà ãî ïðîáâàì êàòî ðåäàêòîð çà äðåáíè “ïðîåêò÷åòà” è òåñòîâå ïî âðåìå íà ÷åòåíå íà êíèãè äà âèäèì êàê å. Eclipse íå ìè å ìíîãî óäîáåí çà òîâà, çàùîòî ñúçäàâàíåòî íà ïðîåêò ìè èäâà â ïîâå÷å àêî å ñàìî åäèí òåñòîâ ôàéë.  òàêèâà ñëó÷àè ïîëçâàì ïðîñò ðåäàêòîð ñúñ ñèíòàêòè÷íî îöâåòÿâàíå è êîìïèëèðàíå îò êîíçîëàòà.
Ñúùî òàêà ïðèÿòíà èçíåíàäà áåøå âúçìîæíîñòòà äà èçâàäèø íÿêîé îò ïðîçîðöèòå èçâúí ãëàâíèÿ ïðîçîðåö íà NetBeans-à – çà äà ãî çàâëà÷èø íàïðèìåð íà âòîðèÿ ñè åêðàí. Æàëêî, ÷å àç ñè èìàì ñàìî åäèí ìîíèòîð.
Profiler-úò èçãëåæäàøå ïðèÿòåí, Ðîìàí äåìîíñòðèðà ïîëçâàíåòî íà “Profiling points” çà çàñè÷àíå âðåìåòî íà èçïúëíåíèå ìåæäó òÿõ. Íàêîâ èçðàçè ñúæàëåíèåòî ñè çà òîâà, ÷å íÿìàø îïöèÿòà äà âèäèø ñòðóêòóðàòà íà ïðîìåíëèâà îò ñúñòàâåí òèï â ìàëêîòî ïðîçîð÷å, êîåòî ñå ïîÿâÿâà êàòî ÿ ñåëåêòèðàø. Íî çàëàòà íå ìó ïîçâîëè äà îáâèíè Eclipse â ëèïñàòà íà òàçè îïöèÿ – êîé íå ïîëçâà “Inspect” (Ctrl-Shft-I)! Ìîæåø äà ïðàâèø è “snapshot” â äàäåí ìîìåíò, äà ñðàâíÿâàø ñ “snapshot” îò ìèíàë ìîìåíò è äà âèæäàø êîëêî ïàìåò ïîâå÷å å çàåòà íàïðèìåð.
Äðóã ìèíóñ, êîéòî Íàêîâ ïîñî÷è, å ëèïñàòà íà àâòîìàòè÷íà êîìïèëàöèÿ ñàìî íà ïðîìåíåíèòå êëàñîâå ïî âðåìå íà ðåäàêòèðàíå – îïöèÿòà “Build Automatically” â Eclipse. Ðîìàí îáÿñíè, ÷å èìàëè ãîëÿìî æåëàíèå äà âêëþ÷àò òàçè ôóíêöèîíàëíîñò âúâ âåðñèÿòà 6.0, íî íå ñìîãíàëè ñ âðåìåòî è çà òîâà ùå òðÿáâà äà ñå èç÷àêà äî ñëåäâàùàòà âåðñèÿ. Êàòî äî òîãàâà ñå êîìïèëèðà öåëèÿ ïðîåêò âñåêè ïúò. À òîâà å ìèíóñ ïðè ãîëåìè ïðîåêòè, àç ïîíå ïîëçâàì íîí-ñòîï àâòîìàòè÷íîòî êîìïèëèðàíå.
 îáùè ëèíèè ïîâå÷åòî íîâîñòè â NetBeans, êîèòî Ðîìàí ïðåäñòàâÿøå òîëêîâà åíòóñèàçèðàíî, ïîðàæäàõà ó ìåí ëåêî ñúæàëåíèå êúì òîçè ïðîåêò íà Sun – ïîëçâàì òåçè îïöèè îò ãîäèíè ñ Eclipse, êîåòî çíà÷è è ÷å ñà ïîèç÷èñòåíè îò áúãîâå. Íå âèäÿõ ïðè÷èíà äà ìèíà êúì NetBeans îñâåí ìîæå áè ìàëêàòà äèñòðèáóöèÿ ïðè æåëàíèå ñàìî íà J2SE ïîääðúæêà.
Òúé êàòî òàçè ëåêöèÿ ñå ïðîòî÷è ñ ïîëîâèí ÷àñ, âòîðàòà ëåêöèÿ çàïî÷íà â 20:30. Íà Ìèðîñëàâ Íà÷åâ ìó ñå íàëîæè äà ñå ñáëúñêà ñ íóæäàòà íà ìíîãî îò ãîñòèòå äà ñå ïîðàçòúï÷àò âúïðåêè æåëàíèåòî íà îðãàíèçàòîðèòå äà ïðîïóñíåì ïî÷èâêàòà çàðàäè îãðàíè÷åíîòî âðåìå. Ìèíàõìå êúì êðàòêî ïðåäñòàâÿíå íà íîâèòå SwingX êîìïîíåíòè – â îáùè ëèíèè ïðåãëåæäàíå íà ïðèìåðà, äàäåí îò Sun. Äîâîëíà ñúì îò ðàçâèòèåòî íà êîìïîíåíòèòå, èçãëåæäàõà äîñòà äîáðå è ñúùî âëèçàò â ToTest ñïèñúêà ìè.
Âñå ïàê ïðàâåøå âïå÷àòëåíèå ðàçëèêàòà â ïðåäñòàâÿíåòî íà NetBeans 6.0 íà ìàøèíàòà íà Ìèðîñëàâ ñïðÿìî òàçè íà Ðîìàí. Êàêòî êàçà ãëàñ îò çàëàòà : “Ñåãà ùå âèäèì êàê ñå äúðæè NetBeans â íàøåíñêè óñëîâèÿ…”
Ïîêðàé âòîðàòà ëåêöèÿ “Rich Client Application example” ñå ïîîòïëåñíàõìå êúì âúïðîñè îò áàçèòå äàííè êàòî ïîëèòèêèòå íà òðàíçàêöèè è çàêëþ÷âàíå, êîèòî äîâåäîõà äî èçâîäà, ÷å å äîáðå äà èìà ëåêöèÿ ïî òåìàòà. Ñòèãà è íÿêîé äà ñå ïîäãîòâè 😉
Íóæäàòà ïðè ïîëçâàíå íà JNLP öÿëîòî ïðèëîæåíèå äà å ïîäïèñàíî îò åäèí ÷îâåê äîâåäå äî äèñêóñèÿ íà òåìà äàëè òðÿáâà ðàçðàáîò÷èêà ìó äà å ïîäïèñàë è èçâåñòíè øèðîêî èçïîëçâàíè áèáëèîòåêè, êîèòî å âêëþ÷èë – íàïðèìåð log4j. Îòãîâîðà áå – äà, òðÿáâà äà ïîäïèøåø âñè÷êî! Åäèí îò ãîñòèòå ñå ïðîòèâîïîñòàâè íà íóæäàòà òîé äà ãàðàíòèðà ïðåä êëèåíòà çà log4j. Ìèðîñëàâ íàïîìíè, ÷å âñå ïàê êëèåíòà ïëàùà íà íàñ çà ðàçðàáîòêà íà ïðèëîæåíèåòî, è ÷å â êðàéíà ñìåòêà àêî íèå íå âÿðâàìå íà åäíà áèáëèîòåêà, çàùî èñêàìå êëèåíòà äà é âÿðâà? À è òóê ñå íàìåñâà îòãîâîðíîñòòà – òè ðàçðàáîòâàø ïðèëîæåíèåòî, òðÿáâà äà èçáèðàø âíèìàòåëíî êàêâè êîìïîíåíòè ïîëçâàø.
Êîãàòî ñåìèíàðà ïðèêëþ÷è (îêîëî 22:15), ìîÿò ïàêåò ñîëåòè çà åêñòðåìíè ñèòóàöèè áå îòäàâíà èçÿäåí îò êîëåãèòå 😉 Òàêà ÷å ñ Âåð÷åòî ñå õâàíàõìå ïîä ðú÷è÷êà çà äà íå ñå ïðåòðåïåì íåéäå â ëåäà, è ñå îòáèõìå çà ïî åäíà ïèöà â “Òîðîíòî” – ìíîãî ñà ìè âêóñíè ïèöèòå òàì! Ñëåä òîâà âå÷å ìîæåõ äà ïðåöåíÿ, ÷å ñúì äîâîëíà îò òîâà, ÷å äîéäîõ íà ñåìèíàðà – äà, áåøå òåæúê, çàùîòî áå ñëåä ðàáîòåí äåí, äî êúñíî, áåç ïî÷èâêè, íî ïîäî÷óõ íÿêîè íîâîñòè, çà êîèòî, ïðåäïîëàãàì, ñêîðî ùå ñå ÷óâà âñå ïîâå÷å. Êîëêîòî äî ïðåçåíòàöèÿòà íà NetBeans – áèëà å äîáàâåíà 3 äíè ïðåäè ñåìèíàðà ñëåä êàòî ñïîðåä Íàêîâ Sun íàó÷èëè çà ñúáèòèåòî è ïðàòèëè ÷îâåê. Æàëêîòî áå, ÷å çàå íàé-áîäðîòî âðåìå (ïîíå çà ìåí) – ïúðâèÿ ÷àñ è ïîëîâèíà. Òîâà ñå äîêàçâà è îò àñèìåòðè÷íîñòòà íà òàçè ìè ïóáëèêàöèÿ – êîëêîòî è äà ñå ñòàðàåõ, êîíöåíòðàöèÿòà ìè áå íèñêà ñëåä âòîðèÿ ÷àñ. Íî ïîíå íàïðàâè íåùî, çà êîåòî àç íå íàìåðèõ äîñòàòú÷íî æåëàíèå – äà ðàçãëåäàì òàçè àëòåðíàòèâà íà òåêóùîòî ñè IDE Eclipse. Âåäíúæ ãî èíñòàëèðàõ, íî òàêà è íå ñå íàñèëèõ äà ãî òåñòâàì ñåðèîçíî. Íàêðàÿ ãî ìàõíàõ çàùîòî èìàõ íóæäà îò ìÿñòîòî è òîâà å. Íåïðèÿòíî âïå÷àòëåíèå îáà÷å ìè îñòàâè ñêàñòðÿíåòî íà äèñêóñèèòå, êîèòî ñå ïîëó÷è íà íÿêîëêî ïúòè – ïðåäïîëàãàì ïðè÷èíà áå îãðàíè÷åíîòî âðåìå – ìèíóñúò íà ñåìèíàðèòå â ðàáîòåí äåí.
À, äà! Ñëåä ìåñåö ùå èìà íÿêàêâî ñúáèòèå â ãðàôà “çàáàâíè” – “áîêñèíã” ìåæäó .NET è Java ïðîãðàìèñòè. Íåùî áîðáèòå ìåæäó ïëàòôîðìèòå íå ñà ìè ëþáèìà òåìà, íî ñìÿòàì äà ñå îòáèÿ â ïàðê-õîòåë Ìîñêâà àêî èìàì âúçìîæíîñò (ñúæàëÿâàì, íå ïîìíÿ òî÷íàòà äàòà è ÷àñ â ìîìåíòà).