Wykonywanie kodu JavaScript w Javie

ausmalbild-nashorn-7Wraz z pojawieniem się Javy 8 został udostępniony nowy silnik JavaScriptowy dla JVM o nazwie Nashorn. Zastąpił on starszą implementację Rhino, dostępnego od Javy 6. JavaScriptowy silnik Rhino został stworzony dawno temu przez firmę Netscape (chyba w 1997 roku), a w późniejszym czasie rozwijany był przez Mozillę. Nashorn to silnik pozwalający uruchamiać kod Javascriptowy po stronie serwera. Daje to duże możliwości, bo w łatwy sposób można udostępnić „język / składnie” jakiejś konfiguracji dla użytkownika, dzięki czemu w trakcie działania aplikacji można modyfikować implementację pewnych zachowań i dodawać nowe. Dzięki wykorzystaniu takiego silnika można np. dać użytkownikowi możliwość oprogramowania jakiegoś fragmentu systemu.
Wykorzystując taki silnik można zaimplementować np. walidację formularzy przechowując ją tylko w jednym miejscu systemu / modelu. Z formularza przekazujemy JSONa, po stronie serwera wykonujemy ten sam kod który był wykonany po stronie przeglądarki.

Bez zbędnego wstępu, przejdę do konkretnych przykładów pokazujących możliwości wywoływania kodu JavaScript z poziomu Javy.

Przykład Hello World:

W wyniku uruchomienia czego, na konsoli pojawi się tekst: „Cześć, tu Notatnik Programisty!”

Interfejs ScriptEngine posiada przeciążoną metodę eval przyjmującą obiekt klasy Reader, dzięki czemu można wywołać kod bezpośrednio z zewnętrznego pliku:

W Javie 7 metoda getEngineByName(„js”) zwróci implementację Rhino. Od wersji ósmej będzie to już silnik Nashorn.

Czytaj dalej

Ostatni dzwonek na przygotowanie się do e-kontroli

wizjanet_jpk_b3O wprowadzeniu e-kontroli podatkowej dla przedsiębiorstw oraz jednostek administracyjnych i samorządowych mówi się już od dłuższego czasu. Płynnie zostały już wprowadzone w dużych firmach, gdzie obowiązują od stycznia bieżącego roku, a pliki JPK przesyłane są do Urzędów Skarbowych od 1 lipca. 1 stycznia 2017 roku to ostateczny moment, w którym oprogramowanie generujące pliki JPK mają wdrożyć jednostki administracyjne i samorządowe odpowiadające sektorowi MŚP (czyli małym i średnim przedsiębiorstwom).
Wśród wielu osób zarządzających księgowością w gminach i miastach e-kontrole i zagadnienia związane z Jednolitym Plikiem Kontrolnym wywołują pewne obawy i wątpliwości. Zupełnie niepotrzebnie, ponieważ odpowiednio wcześniejsze przygotowanie do kontroli, czyli wdrożenie oprogramowania do rejestru VAT i faktur oraz generującego plik JPK, pozwoli uniknąć kłopotów i ewentualnych kar. Co ważne, e-kontrole dotyczą nie tylko prywatnych przedsiębiorców, ale też gminy, organizacje, stowarzyszenia, jednostki administracyjne oraz samorządowe. Jednym słowem wszystkie instytucje, będące podatnikiem będą podlegać e-kontroli.

Czytaj dalej

Java Spring MVC, recenzja kursu wideo z Videopoint.pl

vswmvcPół roku temu opisywałem kurs z podstaw frameworka Spring dostępnego w Videopoint.pl, a dziś co nieco o kolejnym z tej serii: Spring Web MVC. Autorem obu ponad 3-godzinnych materiałów jest Dobromir Matusiewicz –  starszy projektant w Asseco Poland SA., który od kilkunastu lat zajmuje się tworzeniem oprogramowania dla banków, a od kilku opiera swoje aplikacje na potencjale Spring Framework.

Czytaj dalej

Myth: The Fallen Lords

myth_-_the_fallen_lordsYeah, przyszedł dziś do mnie mega prezent za 15 zeta – dla mnie bezcenny. Wspomnienie sprzed prawie 20 lat.
Jest rok 1997, mój pierwszy komputer (nie licząc C64), przez kilka miesięcy jeszcze bez modemu wdzwaniającego się na 0202122 do netu – Pentium 166 MHz, 32MB ramu, dysk 2GB, Windows 95 i ta gra, przewyższająca wszelką konkurencję pod względem grafiki, odgłosów otoczenia, klimatu, lektora scenariuszy, systemu walki, sterowania kamerą, poziomu trudności oraz genialnych soundtracków: Myth The Fallen Lords. W tym czasie można już było pograć w kultowego Diablo 1.

Czytaj dalej

Koniec ery Pascala

Python_logo_and_wordmark.svgTo się musiało kiedyś wydarzyć – Pascal odchodzi w zapomnienie. Od przyszłego roku w szkołach średnich zastąpi go… PYTHON!

W komunikacie dyrektora Centralnej Komisji Egzaminacyjnej z 9 września 2016 r. w sprawie listy systemów operacyjnych, programów użytkowych oraz języków programowania w przypadku egzaminu maturalnego z informatyki w 2017 roku możemy przeczytać że:

Od roku szkolnego 2017/2018 na maturze z informatyki nie będzie już możliwości wyboru języka programowania Pascal, natomiast od roku 2018/2019 będzie można wybrać język programowania Python.

Źródło komunikatu: Centralna Komisja Egzaminacyjna.

Czytaj dalej

Jak zweryfikować wiarygodność danych, gdy obie strony znają to samo hasło?

hashingZałóżmy, że systemy A i B ustaliły wspólne hasło: PASSWD. Aby w prosty sposób każdy z użytkowników mógł być pewny, że dane zawarte w transmisji są wiarygodne można zastosować następujący algorytm:

  1. System A chce wysłać dane D do systemu B.
  2. System A wysyła dane D1 = D oraz D2 = HASH(D + PASSWD) do systemu B.
  3. System B odczytuje dane D1, wylicza hasz D3 = HASH(D1 + PASSWD) i porównuje hasze D2 i D3.
  4. Jeśli D2 i D3 są zgodne, dane przesłane w transmisji są wiarygodne.

Czytaj dalej

Własny protokół URL Scheme, jak uruchomić aplikację desktopową z przeglądarki?

Podczas rozwijania aplikacji webowej np. klasy ERP / CRM, prędzej czy później będziemy musieli wykonać obsługę urządzeń zainstalowanych bezpośrednio na komputerze użytkownika. Może to być komunikacja z kolektorami danych, drukarkami fiskalnymi, obsługa skanera, czy podpisywanie dokumentów podpisem cyfrowym. Część takich rozwiązań mieliśmy w firmie obsłużonych za pomocą appletów Javy, a część za pomocą Java Web Start. Niestety zakończenie wsparcia appletów przez przeglądarki spowodowało konieczność zmiany wykorzystywanej technologii.

Tym razem wróciliśmy do standardowej aplikacji okienkowej instalowanej na komputerze użytkownika. Jednak głównym założeniem było to, aby użytkownik po zalogowaniu do systemu, nie musiał się ponownie logować w kolejnym programie. Jak to zrobić?

Czytaj dalej

Odroid C1+ i WRTnode

Zobaczcie co dzisiaj do mnie dojechało z ‎Kamami‬.odriod_wrt_small
Zapowiadają się kolejne ciekawe wieczory i czas sformatować karty z systemami dla Raspberry PI.

‎Odroid‬ posiada:

  • procesor Cortex®-A5 (ARMv7) 1.5Ghz quad core
  • Mali-450 MP2 GP OpenGL ES 2.0/1.1 w Linuksie oraz Androidzie
  • 1 GB DDR3 SDRAM
  • 40-pinowe GPIO + 7-pinowe I2S
  • Gigabit Ethernet
  • Gniazdo pamięci Flash eMMC4.5 HS200 lub UHS-1 SDR50 MicroSD
  • Gniazdo USB 2.0 x 4, USB OTG x 1
  • Wbudowany odbiornik podczerwieni

Czytaj dalej