Джавиране

Публикувано / posted 2009-10-16 в категория / in category: Java
  

java_logoТази седмица я посветих на учене/припомняне на Java. Отдавна не бях я пипвал и съответно, общо взето, се наложи да започвам от А и Б. Първият проблем беше да си намеря читава книга. Тези, които съм купувал и използвал преди бяха много стари, още от времето когато Swing-a беше нова екзотика. Както и очаквах -- наложи се да сваля и прегледам 10-ина книги (god bless thepiratebay.org) преди да намеря една, която, не само е читава, ами и да отговаря на префинения ми вкус ;-). В крайна сметка се спрях на Core Java 8th Edition -- авторите са hardcore джависти, отделно имат опит със C++ и дават много добри сравнения между двата езика, отделно -- имат чувство за хумор. Няма разводняване с разни глупави и прекалено обширни примери -- всичко е написано с мярка и на място (е, все пак е 8-мо издание, имах-си-хас).

Причината да започна отново да разучавам Java-та е, че PHP-то нещо ми отесня съвсем. Общо взето достигнах до ранг "Скакауец" с девиз: "Мене жокер ми не требе, я това си го знам". Отделно ми поомръзна.

Бях забравил каква е тръпката (трътката) от ученето на "нов" език. Голям кеф е човек да си поизпържи мозъка с нови концепции и най-вече да трябва да го огъва и усуква, за да ги възприеме, въпреки наличието на стари, които са подобни и в същото време различни.

Известно време се колебаех дали да не се върна към любимия ми C++, но следните съображения надделяха в полза на Java-та:

  • Android -- всъщност това е основното изкушение. Според мен в близките една-две години това ще е новия хит (от тип "Еврибари на магари") и той ще се задържи такъв поне 5-6.
  • Има повече и по-разнообразна работа за Java програмисти. От кариеристична гледна точка това за мен е важно.
  • срам не срам трябва да призная, че C++ ми идвам прекалено сложен. То не се знае дали и Java-та няма да ми дойде в повечко -- все пак вече съм стар човек (кхъ-кхъ, къде ми е бастуна (bugah-bugah-bugah!!! Stupid dog! You make me look bad.)). Не на последно място -- човек не трябва да си прави илюзии, че (ще) разбира от C++ ако не изглежда точно така:

bjarne

:-)

По закона на всеобщата гадост почти веднага успях да се нахендря на бъг в Java-та, заради който изгубих половин ден чудейки се: Абе наистина ли е бъг или просто аз съм тъп?

Ето го:

	{

		Locale.setDefault(new Locale("bg", "BG"));

		String[] weekDays = new DateFormatSymbols().getWeekdays();

		GregorianCalendar g = new GregorianCalendar();

		System.out.println(weekDays[g.getFirstDayOfWeek()]);

	}

Е това горното трябва да изкара "Понеделник", а то изкарва "Неделя". Явно Locale-а за България е бъгав и first getFirstDayOfWeek() връща 1 вместо 2 (всичко е заради извратените американци, при които седмицата започва с Неделя (wft?! oh well…)).

Изключително лошо впечатление ми направи, че като търсех в Google за този проблем нямаше нито един постинг на български, все едно, тук никой не се е нахендрял на него. Всъщност, същият проблем съществува с Locale-ите на всички източно европейски страни, но само един унгарец го е постнал като бъг в бъгтракера на Java.

Друг шит -- getWeekdays връща масив с празен елемент [0]. Все едно нарочно са го направили, за да е първия ден с индекс 1 и да е по-удобно (на кОго?!). Странна работа…

Въобще, като четох книгата явно има не една и две недомислици в джавата, като най-значимата е, че член-променливите в клас получават по подразбиране access level package (вместо private), но това си е омазано от самото начало…

Както и да е, ще я боря Java-та. Да видим какво ще излезе…


Comments are closed.