Java 8 – lamda výrazy

„Lambda co?“ „To bude k hovnu, to nebudu používat!!“

Tak asi taková byla moje první reakce na novou funkci, kterou představila nová verze Javy a to již ve verzi 8. V násedujících pár postech bych vám rád ukázal nové funkce nové Javy a předvedl tyto novinky na názorných ukázkách. A dnes se podíváme na Lambda Expressions, pro nás přeložitelné a vyslovitelné jako lambda výrazy.

Lambda výrazy

Co se pod těmito dvěma slovy schovává? Ve zkratce – zjednodušení zápisu anonymních metod. Lamda výrazy nám dokáží nahradit anonymní funkci ve funkčních rozhraních do „krásných“ miniaturních zápisů. Ještě před ukázkou bych rád vysvětlil, co znamená ten výraz funkční rozhraní. Funkční rozhraní je takové rozhraní, které má právě jednu jedinou abstraktní metodu. Takových to rozhraní je celá řada, pojďme si tedy ukázat jeden příklad, a tím bude jedno Swingové tlačítko …

JButton button = new JButton();
button.addActionListener(new ActionListener() {
	@Override
	public void actionPerformed(ActionEvent e) {
		System.out.println("Old anonymous method");
	}
});

V příkladu výše vidíte triviální kód, který vyvoří nové tlačítko a nastaví mu událost na jeho kliknutí, a tou je vypsání hlášky do konzole. Úplná prkotina a i tak má 7 řádků? Zbytečné, nově tu máme lambda výrazy. Podívejte ná stejný kód, ale po novu s Javou 8 …

JButton button = new JButton();
button.addActionListener(e -> System.out.println("New lambda method"));

Už na první pohle je jasné, jak nám lambda urychlý práci a zpřehlední náš kód, který teď mohl být anonymními funkcemi jen zahlcen. A jak to celé funguje? Implementace funkčního rozhraní může být zapsána místo anonymní funkce tímto lambda výrazem, kdy je předáván seznam argumentů rohraní, pokud nějaké má, následující samotným příkazem pro vykonání.

Ještě hezčím příkladem by mohla být implementace rozhraní Runnable, která pro staré verze vypadá třeba takto …

Runnable r = new Runnable(){
	@Override
	public void run() {
		System.out.println("Thread ...");
	}};

Chcete vidět tento kus kódu s lambdou? Není problém …

 Runnable r = () -> System.out.println("Thread ...");

Jasné, čisté, přehledné. Miluju lamda výrazy :)

Pokud vás lambda v Java 8 zajímá více, doporučuji si projít dokumentaci, příkladů a popisů naleznete více.

http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html

http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

Google Play služby v Genymotion

Tento článek vznikl jako návod, jak dostat Google Play služby do emulátoru Android zařízení Genymotion, a to aktuální verze 2.3. Jak je všem jistě známo, Google Play služby (Google Play Services), pod které patří synchronizace s Google účtem, Hangouty, Gmaily, a desítky jiných služeb a aplikací, je možné provozovat pouze na schválených zařízeních, a tím emulátor rozhodně není a proto v něm tyto služby nenajdete.

google-play-services-630x308

Jenže co když je potřebujeme? Ať už jen pro testování nových verzí Google aplikací, pro testování vašich aplikacích s podporou Google Play services a nebo jen tak na hraní. Níže popíšu rychlý návod krok za krokem, jak služby do emulátoru Genymotion dostat a to poměrně snadnou cestou.

Pokračovat …

Dočasný profil v prohlížeči Opera

Pokud jste šťastným majitelem internetového prohlížeče Opera stejně jako já, tak se vám bude třeba hodit jeden malý starý trik, kterým jde vytvořit dočasný profil v tomto prohlížeči. Praktické využití vidím z více důvodů …

  1. Pro cizýho uživatele, ktrerý se potřebuje rychle na něco podívat a nechcete mu dávat přístup do vašich relací, záložek, poznámek atd.
  2. Pokud se vám nezobrazují některé prvky stránek (obrázky, videa) např. z důvodu blokování reklam, vyjmenovávat rozšíření není potřeba :)
  3. Pokud používáte proxy a potřebujete se připojit na stránku bez ní

Cely trik spočívá ve spuštěný souboru Opera.exe s parametrem -pd a udanou cestou, kam se má dočasný profil vytvořit, např. takto …

„C:\Program Files\Opera\opera.exe“ -pd X:\OperaProfile

Složka pro profil nemusí ani existovat, program si jí sám vytvoří, pokud na to bude mít práva, a vytvoří do ní i všechny potřebné soubory. Pokud si chcete alespoň na chvíli vyzkoušet krásnou, rychlou a svěží operu, jako bývá po instalaci bez nainstalovaných veškerých doplňků a zpomalovačů, takto máte příležitost.

Package Viewer for android by SQ.prog

Den se se dnem sešel a SQ.prog pro vás připravilo novou aplikaci pod názvem Package Viewer, jak už její název napovídá, jde o prohlížeč balíčku pro mobilní operační systém Android. Pokud jste fanoušci malého zeleného skřeta tak jako já, a baví vás detailně zkoumat obsah jednotlivých aplikacích, tak jako mě, je tato aplikace dělaná přímo pro vás.

Package Viewer

Pojďme se na aplikaci podívat z blízka …

Pokračovat …

Klávesové zkratky pro Android Studio

Jelikož již delší dobu programuji aplikace pro systém Android, člověk si potřebuje vždy trochu ulehčit práci, a klávesové zkratky jsou výborný způsob jak ušetřit minimálně čtvrtinu času, místo zdlouhavého hledání požadované nabídky v nějakém několikrát zanořeném kontextovém menu.

Android Studio, založené na bázi IntelliJ IDEA, je výborné vývojového prostředí, které jsem již dlouho hledal a nakonec našel. IDE plné neomezených možností, pomocníkem, který skoro píše kód za vás, no co víc si přát.

Aby i pro vás byla práce v tomto IDE o něco pohodlnější, rozhodl jsem se sepsat pár nejdůležitějších klávesových zkratek, které používám, a které by se vám mohli hodit. Jde opravdu pouze o výčet z nich, jelikož IntelliJ ve výchozím nastavení jich má desítky, ne-li stovky, a další své vlastní si není problém namapovat. Tak pojďme na to.

 Standardní klávesové zkratky (Win)

Ctrl + D – zkopírování aktuálního řádku (i v jiných aplikacích, jako Notepad++, Notepad2 atd.)

Ctrl + W – výběr aktuálního slova, řádku, metody atd. Jak postupně klikáte, tak o to více, se vám výběr nafukuje. V originále je tato funkčnost nazývána jako  Incremental expression selection

Ctrl + Shift + Backspace - inteligentní dokončení aktuálního kódu, pokud máte např. deklarovanou kolekci List<Person> = new, tak po new můžetr stisknout tuto kouzelnou klávesu a automaticky se vám doplní celý konstrukor pro vybrané dynamické pole, pokud je možností více, tak i s popup dialogem

Shift + Escape  - skrývání překryvných oken (Terminal, VSC, Android DDMS atd.) – všechny tato vyskakovací okna zabírají kupu místa a pro jednoduché skrytí stačí v aktivním okně stisknout klávesu

Alt + Enter - výběr akcí, které lze provést nad vybraným prvkem. Pokud například napíšete třídu a nemáte jí v importech, nabídne „Import class“

Ctrl + Shift + O – pokud vám chybí v importech nějaká knihovna nebo i více knihoven, tato klávesová zkratka se vám o import samotný postará, a to buďto nad vybraným souborem a nebo celým projektem

Ctrl + Shift + V – rychlé vytvoření finální proměnné nad metodou, která vrací nějaký výsledek

 Mnou nadefinované klávesové zkratky (Win)

Některé akce žádnou výchozí zkratku nemají a je proto výhodné si ji k akcím doplnit. Jelikož využívám systému GIT, většina z zkratek je právě pro práci s ním. Namapování klávesových zkratek provedete v nastavení File – Settings – IDE Settings – Keymap. Mnou nadefinované jsou pouze návrhy, vybrat si můžete své vlastní.

Ctrl + Alt + Shift + G – otevření popup okna se všemi GIT operacemi

Ctrl + Alt + Shift + B – otevření seznamu větví (tedy Branches), kde lze již klávesnicí snadno přepímat mezi větvemi, porovnávat, mazat je atd.

Pokud by vás zajímali všechny klávesové zkratky, není nic snazšího, než si otevřít výše zmiňované Keymap menu a jakoukoliv klávesovou zkratku si vyhledat. Více najdete standardně přímo v manuálu IntelliJ a to na adrese Keyboard shortcuts and mouse reference