Programowanie urządzeń mobilnych interesuje mnie już od dość dawna. W obecnej sytuacji na rynku, o czym chyba każdy doskonale wie, dominują iOS i Android – z czego właśnie ten drugi interesuje mnie zdecydowanie bardziej.
Niestety, z Javą nie lubimy się zbytnio i poza krótkim epizodem na studiach nigdy nie używałem specjalnie tego języka. Przygodę z programowaniem na Androida zacząłem jednak właśnie od Javy i … szybko porzuciłem. I nie chodzi tu o samą składnię i strukturę języka tylko o model programowania proponowany przez Google. Sporo się trzeba nawalczyć, żeby napisać nawet najprostszy program (nie mając wcześniej
doświadczenia w tym temacie) a przyciężkie Eclipse, jeszcze gorszy Android Studio i koszmarnie działający emulator wcale w tym nie pomagają.
Spędziłem trochę czasu wykonując research i przyglądając się rozwiązaniom takim jak Xamarin, Qt dla Androida itp. (aplikacje Javascript + Html5 odrzuciłem w zasadzie od razu, gdyż projekty które chciałbym realizować nie mają w założeniu opierać się jedynie na ładnym GUI i interakcją z usługami webowymi) i tak przypadkiem trafiłem na produktAnywhere Software pod nazwą Basic 4 Android.
Basic 4 Android (b4a) jest swego rodzaju dialektem visual basica, ale nie tego którego znamy obecnie z produktów Microsoft (.Net) ale raczej VB6. Kod napisany w b4a jest następnie konwertowany do Javy i kompilowany. Takie rozwiązanie powoduje, że na urządzeniu docelowym nie potrzebujemy żadnych dodatkowych maszyn wirtualnych czy sporych rozmiarów bibliotek runtime – otrzymujemy rozwiązanie w zasadzie natywne. Dla przykładu – prosta aplikacja w stylu hello world przygotowana za pomocą Xamarina w postaci apk to ok 0,9Mb natomiast identyczna przygotowana za pomocą b4a to niecałe 0,2Mb. O różnicy w wydajności trudno mi się na tę chwilę wypowiedzieć, nie napisałem jeszcze żadnego złożonego softu drenującego zasoby urządzenia.
B4a w wersji testowej możemy pobrać za darmo ze strony Anywhere Software tutaj. W wersji testowej nie mamy możliwości dołączania żadnych dodatkowych bibliotek, w związku z tym poza jakimś bardziej złożonym kalkulatorem i prostą zabawą z GUI nie będziemy w stanie stworzyć niczego ciekawego, można natomiast zaznajomić się z funkcjonalnością IDE, doskonałego Debuggera i filozofią tego softu. Wersja pełna (mówię tu o wersji Enterprise) to na chwilę obecną 119$. W cenę wchodzi soft, dostęp do forum i bibliotek oraz dwuletni support (a więc także download wszystkich nowych wersji, które się przez ten czas pojawią). Bardzo często zdarzają się też różnego rodzaju promocje – mnie udało się kupić pełną wersję za 50% ceny. Kwota jest wręcz śmieszna biorąc pod uwagę cenę innych, mniej lub bardziej podobnych rozwiązań.
Jeżeli czyta to teraz ktoś, kto pisze androidowy soft w javie stuka się pewnie w głowę – po co płacić za coś, co można mieć za darmo ? Postaram się w skrócie opowiedzieć dlaczego uważam, że warto kupić ten soft i wydać na niego (co prawda nie duże, ale zawsze) pieniądze.
1. IDE – jest bardzo proste i lekkie. Daleko mu do ogromnej ilości opcji znanej z Eclipse czy Visual Studio. Dzięki temu działa szybko i wydajnie a czas potrzebny na jego opanowanie jest bardzo krótki. Jest też całkiem fajnie działający odpowiednik IntelliSense.
2. Designer – jest również bardzo prosty. Nie znajdziemy tu renderowanej grafiki a jedynie figury geometryczne reprezentujące komponenty, które możemy rozmieścić na formie i poustawiać im różne parametry. Prawdziwa moc designera objawia się, gdy połączymy się z urządzeniem (za pomocą b4a_bridge – do pobrania z google play) za pomocą bluetooth lub WiFi (tak tak, podłączanie urządzenia kabelkiem USB do kompa jest zbędne zarówno w procesie projektowania jak i debugowania i testowania programu na urządzeniu) – kontrolki na wybranej formie, wyświetlane już natywnie, możemy na urządzeniu dowolnie przesuwać, zmieniać rozmiar itp. Możemy również edytować figurki na ekranie kompa a efekt edycji obserwować na urządzeniu. Nie ma również konieczności przygotowywania ekranów w różnych rozdzielczościach (co jest plagą w świecie Android-a) – uporządkowanie i rozmiary elementów w zależności od rozdzielczości można opisać za pomocą bardzo prostych skryptów definiowanych w designerze.
3. Debugger – jest doskonale rozwiązany. Szczególnie fajna jest opcja rapid debugging. Oczywiście istnieje możliwość podglądania stanu zmiennych, ustawiania breakpointów itp. jednak rapid debugging idzie o krok dalej – możemy zmieniać kod aplikacji „w locie” i obserwować efekty bez konieczności ponownego ładowania całości aplikacji do urządzenia.
4. Biblioteki – są biblioteki praktycznie do każdego z aspektów programowania mobilnego. W większości są to wrappery bibliotek Java ale jest też sporo napisanych już w samym b4a. Ciągle powstaje też coś nowego. Istnieje oczywiście możliwość przygotowania własnej biblioteki czy to napisanej w b4a czy też przygotowania wrappera biblioteki java (temat szeroko dyskutowany i opisywany na forum)
5. Community – bardzo liczne i bardzo aktywne. Ogromna ilość ludzi aktywnie uczestniczy w projekcie przygotowując nowe biblioteki czy chociażby zgłaszając uwagi. Forum jest bardzo żywe i nie ma problemu z uzyskaniem pomocy. W więszkości przypadków prosty search tematów na forum pozwala znaleźć odpowiedź na nurtujące pytanie. Bardzo aktywnie w życiu forum uczestniczy również sam autor projektu i szef Anywhere Software – Erel Uziel
Czy widzę jakieś wady ? Owszem widzę, o nich też napiszę. Projekt jednak cały czas aktywnie się rozwija i być może to o czym napiszę szybko się zdezaktualizuje.
1. Język – VB6 nie jest językiem z którym miałem dużo do czynienia. Na codzień korzystam głównie z C# i czasami VB.Net i niestety ten język różni się od nich. Przede wszystkim brakuje mi zaawansowanej obiektowości. Co prawda mamy klasy, obiekty, mechanizm dziedziczenia itp. ale należy zapomnieć o dobrodziejstwach .Net takich jak chociażby interfejsy i klasy abstrakcyjne (tzn. jest to do obejścia stosując sam zaimplementowany polimorfizm – ale mimo wszystko). Brakuje też np. możliwości prostego utworzenia zdarzeń. Pewnie znalazło by się jeszcze dużo takich braków – ale być może założenie jest takie, że przede wszystkim ma być prosto – a zaawansowany programista jakoś sobie poradzi wymyślając różnego rodzaju workarounds.
2. Testy jednostkowe – po prostu nie istnieją. Nie ma żadnego frameworka ani runnera. Możliwość przygotowania takowych też jest ograniczona, gdyż kod nie jest uruchamiany na komputerze a tzw. wstępna kompilacja to jedynie jakiś tam prosty parser, którego rolą jest sprawdzić składnię i wychwycić najprostsze błędy. Pewną nadzieję budzi mechanizm rapid debugger, gdyż jak mi się wydaje uruchamia on równolegle kod na komputerze i urządzeniu – nie mniej jednak, wydaje się że przygotowanie mechanizmu do przeprowadzania testów jednostkowych nie jest w tej chwili priorytetem autora.
Poza b4a, zupełnie za darmo, możemy ściągnąć sobie inny projekt Anywhere Software, który nazywa się b4j (basic for java) i jak sama nazwa wskazuje – generuje nam aplikację Java na podstawie kodu napisanego w basicu. Możemy również tutaj stworzyć sobie jakieś tam GUI dla swojej aplikacji wykorzystując designer JavaFX.
Nowością ostatniego miesiąca jest także b4i dla iOS, który nie jest jeszcze dostępny w jakiejkolwiek wersji testowej, ale jest rozwijany czego dowodem jest ten film.
Podsumowując. Polecam spróbować. Nawet jeżeli nie jesteś zainteresowany programowaniem mobilnym, nawet jeżeli nie lubisz basic-a. Przygotowanie prostej aplikacji i odpalenie jej na swoim urządzeniu to naprawdę moment i wtedy może (tak jak u mnie) zapali się żarówka – jak duże możliwości ma ten soft i jak stosunkowo (przynajmniej tak mi się na chwilę obecną wydaje) niewielka learn curve jest potrzebna, żeby realizować swoje projekty.
Swoje postępy w nauce b4a (o ile czas na to pozwoli) będę dokumentował w postaci projektów na GitHub. Wszystkich zainteresowanych zapraszam do pobierania i wymiany zdań.
Witam
Od miesiaca B4A jest darmowa dla wszystkich.
Kazdy moze sciagnac sobie i programowac bez ograniczen.
https://www.b4x.com/b4a.html
Wow ! Dzięki za info, to świetna wiadomość.
Wiedzę, że wersja dla iOS jest nadal płatna ale b4A jest rzeczywiście darmowe. Ciekawe czy to wpłynie jakoś na rozwój tego oprogramowania.