Kategorie
Ebooki
-
Biznes i ekonomia
- Bitcoin
- Bizneswoman
- Coaching
- Controlling
- E-biznes
- Ekonomia
- Finanse
- Giełda i inwestycje
- Kompetencje osobiste
- Komputer w biurze
- Komunikacja i negocjacje
- Mała firma
- Marketing
- Motywacja
- Multimedialne szkolenia
- Nieruchomości
- Perswazja i NLP
- Podatki
- Polityka społeczna
- Poradniki
- Prezentacje
- Przywództwo
- Public Relation
- Raporty, analizy
- Sekret
- Social Media
- Sprzedaż
- Start-up
- Twoja kariera
- Zarządzanie
- Zarządzanie projektami
- Zasoby ludzkie (HR)
-
Dla dzieci
-
Dla młodzieży
-
Edukacja
-
Encyklopedie, słowniki
-
E-prasa
- Architektura i wnętrza
- BHP
- Biznes i Ekonomia
- Dom i ogród
- E-Biznes
- Ekonomia i finanse
- Finanse
- Finanse osobiste
- Firma
- Fotografia
- Informatyka
- Kadry i płace
- Komputery, Excel
- Księgowość
- Kultura i literatura
- Naukowe i akademickie
- Ochrona środowiska
- Opiniotwórcze
- Oświata
- Podatki
- Podróże
- Psychologia
- Religia
- Rolnictwo
- Rynek książki i prasy
- Transport i Spedycja
- Zdrowie i uroda
-
Historia
-
Informatyka
- Aplikacje biurowe
- Bazy danych
- Bioinformatyka
- Biznes IT
- CAD/CAM
- Digital Lifestyle
- DTP
- Elektronika
- Fotografia cyfrowa
- Grafika komputerowa
- Gry
- Hacking
- Hardware
- IT w ekonomii
- Pakiety naukowe
- Podręczniki szkolne
- Podstawy komputera
- Programowanie
- Programowanie mobilne
- Serwery internetowe
- Sieci komputerowe
- Start-up
- Systemy operacyjne
- Sztuczna inteligencja
- Technologia dla dzieci
- Webmasterstwo
-
Inne
-
Języki obce
-
Kultura i sztuka
-
Lektury szkolne
-
Literatura
- Antologie
- Ballada
- Biografie i autobiografie
- Dla dorosłych
- Dramat
- Dzienniki, pamiętniki, listy
- Epos, epopeja
- Esej
- Fantastyka i science-fiction
- Felietony
- Fikcja
- Humor, satyra
- Inne
- Klasyczna
- Kryminał
- Literatura faktu
- Literatura piękna
- Mity i legendy
- Nobliści
- Nowele
- Obyczajowa
- Okultyzm i magia
- Opowiadania
- Pamiętniki
- Podróże
- Poemat
- Poezja
- Polityka
- Popularnonaukowa
- Powieść
- Powieść historyczna
- Proza
- Przygodowa
- Publicystyka
- Reportaż
- Romans i literatura obyczajowa
- Sensacja
- Thriller, Horror
- Wywiady i wspomnienia
-
Nauki przyrodnicze
-
Nauki społeczne
-
Podręczniki szkolne
-
Popularnonaukowe i akademickie
- Archeologia
- Bibliotekoznawstwo
- Filmoznawstwo
- Filologia
- Filologia polska
- Filozofia
- Finanse i bankowość
- Geografia
- Gospodarka
- Handel. Gospodarka światowa
- Historia i archeologia
- Historia sztuki i architektury
- Kulturoznawstwo
- Lingwistyka
- Literaturoznawstwo
- Logistyka
- Matematyka
- Medycyna
- Nauki humanistyczne
- Pedagogika
- Pomoce naukowe
- Popularnonaukowa
- Pozostałe
- Psychologia
- Socjologia
- Teatrologia
- Teologia
- Teorie i nauki ekonomiczne
- Transport i spedycja
- Wychowanie fizyczne
- Zarządzanie i marketing
-
Poradniki
-
Poradniki do gier
-
Poradniki zawodowe i specjalistyczne
-
Prawo
- BHP
- Historia
- Kodeks drogowy. Prawo jazdy
- Nauki prawne
- Ochrona zdrowia
- Ogólne, kompendium wiedzy
- Podręczniki akademickie
- Pozostałe
- Prawo budowlane i lokalowe
- Prawo cywilne
- Prawo finansowe
- Prawo gospodarcze
- Prawo gospodarcze i handlowe
- Prawo karne
- Prawo karne. Przestępstwa karne. Kryminologia
- Prawo międzynarodowe
- Prawo międzynarodowe i zagraniczne
- Prawo ochrony zdrowia
- Prawo oświatowe
- Prawo podatkowe
- Prawo pracy i ubezpieczeń społecznych
- Prawo publiczne, konstytucyjne i administracyjne
- Prawo rodzinne i opiekuńcze
- Prawo rolne
- Prawo socjalne, prawo pracy
- Prawo Unii Europejskiej
- Przemysł
- Rolne i ochrona środowiska
- Słowniki i encyklopedie
- Zamówienia publiczne
- Zarządzanie
-
Przewodniki i podróże
- Afryka
- Albumy
- Ameryka Południowa
- Ameryka Środkowa i Północna
- Australia, Nowa Zelandia, Oceania
- Austria
- Azja
- Bałkany
- Bliski Wschód
- Bułgaria
- Chiny
- Chorwacja
- Czechy
- Dania
- Egipt
- Estonia
- Europa
- Francja
- Góry
- Grecja
- Hiszpania
- Holandia
- Islandia
- Litwa
- Łotwa
- Mapy, Plany miast, Atlasy
- Miniprzewodniki
- Niemcy
- Norwegia
- Podróże aktywne
- Polska
- Portugalia
- Pozostałe
- Przewodniki po hotelach i restauracjach
- Rosja
- Rumunia
- Słowacja
- Słowenia
- Szwajcaria
- Szwecja
- Świat
- Turcja
- Ukraina
- Węgry
- Wielka Brytania
- Włochy
-
Psychologia
- Filozofie życiowe
- Kompetencje psychospołeczne
- Komunikacja międzyludzka
- Mindfulness
- Ogólne
- Perswazja i NLP
- Psychologia akademicka
- Psychologia duszy i umysłu
- Psychologia pracy
- Relacje i związki
- Rodzicielstwo i psychologia dziecka
- Rozwiązywanie problemów
- Rozwój intelektualny
- Sekret
- Seksualność
- Uwodzenie
- Wygląd i wizerunek
- Życiowe filozofie
-
Religia
-
Sport, fitness, diety
-
Technika i mechanika
Audiobooki
-
Biznes i ekonomia
- Bitcoin
- Bizneswoman
- Coaching
- Controlling
- E-biznes
- Ekonomia
- Finanse
- Giełda i inwestycje
- Kompetencje osobiste
- Komunikacja i negocjacje
- Mała firma
- Marketing
- Motywacja
- Nieruchomości
- Perswazja i NLP
- Podatki
- Poradniki
- Prezentacje
- Przywództwo
- Public Relation
- Sekret
- Social Media
- Sprzedaż
- Start-up
- Twoja kariera
- Zarządzanie
- Zarządzanie projektami
- Zasoby ludzkie (HR)
-
Dla dzieci
-
Dla młodzieży
-
Edukacja
-
Encyklopedie, słowniki
-
Historia
-
Informatyka
-
Inne
-
Języki obce
-
Kultura i sztuka
-
Lektury szkolne
-
Literatura
- Antologie
- Ballada
- Biografie i autobiografie
- Dla dorosłych
- Dramat
- Dzienniki, pamiętniki, listy
- Epos, epopeja
- Esej
- Fantastyka i science-fiction
- Felietony
- Fikcja
- Humor, satyra
- Inne
- Klasyczna
- Kryminał
- Literatura faktu
- Literatura piękna
- Mity i legendy
- Nobliści
- Nowele
- Obyczajowa
- Okultyzm i magia
- Opowiadania
- Pamiętniki
- Podróże
- Poezja
- Polityka
- Popularnonaukowa
- Powieść
- Powieść historyczna
- Proza
- Przygodowa
- Publicystyka
- Reportaż
- Romans i literatura obyczajowa
- Sensacja
- Thriller, Horror
- Wywiady i wspomnienia
-
Nauki przyrodnicze
-
Nauki społeczne
-
Popularnonaukowe i akademickie
-
Poradniki
-
Poradniki zawodowe i specjalistyczne
-
Prawo
-
Przewodniki i podróże
-
Psychologia
- Filozofie życiowe
- Komunikacja międzyludzka
- Mindfulness
- Ogólne
- Perswazja i NLP
- Psychologia akademicka
- Psychologia duszy i umysłu
- Psychologia pracy
- Relacje i związki
- Rodzicielstwo i psychologia dziecka
- Rozwiązywanie problemów
- Rozwój intelektualny
- Sekret
- Seksualność
- Uwodzenie
- Wygląd i wizerunek
- Życiowe filozofie
-
Religia
-
Sport, fitness, diety
-
Technika i mechanika
Kursy video
-
Bazy danych
-
Big Data
-
Biznes, ekonomia i marketing
-
Cyberbezpieczeństwo
-
Data Science
-
DevOps
-
Dla dzieci
-
Elektronika
-
Grafika/Wideo/CAX
-
Gry
-
Microsoft Office
-
Narzędzia programistyczne
-
Programowanie
-
Rozwój osobisty
-
Sieci komputerowe
-
Systemy operacyjne
-
Testowanie oprogramowania
-
Urządzenia mobilne
-
UX/UI
-
Web development
-
Zarządzanie
Podcasty
- Ebooki
- Programowanie
- Wzorce projektowe
- Wzorce projektowe dla programistów Javy. Udoskonal swoje umiejętności projektowania oprogramowania
Szczegóły ebooka

Wzorce projektowe dla programistów Javy. Udoskonal swoje umiejętności projektowania oprogramowania
Właściwe stosowanie wzorców projektowych jest umiejętnością, którą bardzo cenią twórcy oprogramowania. Wzorce pozwalają na szybkie opracowanie złożonych zagadnień i umożliwiają tworzenie kodu nadającego się do wielokrotnego użycia. Taki kod jest przy tym wydajny, łatwy w testowaniu i utrzymaniu. Z pewnością wzorce projektowe są świetnym rozwiązaniem dla inżyniera, który chce doskonalić umiejętności projektowania oprogramowania.
Książka stanowi zbiór praktycznych informacji dotyczących najpopularniejszych wzorców projektowych. Lekturę rozpoczniesz od zapoznania się z możliwościami korzystania z wzorców projektowych na platformie Javy. Dowiesz się także, jakich zasad trzeba przestrzegać, aby zapewnić czytelność i łatwość utrzymania kodu Javy. W kolejnych rozdziałach znajdziesz praktyczne wskazówki i przykłady dotyczące stosowania wzorców kreacyjnych, strukturalnych, operacyjnych, a także wzorców współbieżności. Nauczysz się ich używać do praktycznego rozwiązywania problemów często spotykanych podczas projektowania oprogramowania. Końcowy rozdział został poświęcony antywzorcom, a zawarte w nim informacje pomogą Ci w ich identyfikacji i podjęciu najlepszych środków zaradczych.
W książce:
- jakie problemy można rozwiązać za pomocą wzorców projektowych w Javie
- jakie możliwości ma programowanie współbieżne
- jak wzorzec projektowy Obserwator buduje relację "jeden-do-wielu" między instancjami
- jakie problemy pomaga rozwiązać wzorzec Odwiedzający
- jak kontrolować zasoby przy użyciu wzorca Pula wątków
- jak zaradzić problemom spowodowanym przez antywzorce
Wzorce projektowe: niezbędnik najlepszych programistów Javy!
O autorze
O recenzencie
Słowo wstępne
Wstęp
CZĘŚĆ 1. Wzorce projektowe i funkcjonalności platformy Java
- Rozdział 1. Wprowadzenie do wzorców projektowych oprogramowania
- Wymagania techniczne
- Kod - od symboli do programu
- Programowanie obiektowe i APDH
- Prezentowanie tylko tego, co niezbędne - hermetyzacja
- Nieunikniona ewolucja - dziedziczenie
- Zachowanie na żądanie - polimorfizm
- Standardowe możliwości - abstrakcja
- Elementy scalające APDH
- Rozumienie zasad projektowania SOLID
- Zasada jednej odpowiedzialności (SRP) - silnik to tylko silnik
- Zasada otwarte-zamknięte (OCP)
- Zasada podstawienia Liskov (LSP) - możliwość zastępowania klas
- Zasada segregacji interfejsów (ISP)
- Zasada odwrócenia zależności (DIP)
- Znaczenie wzorców projektowych
- Przegląd wyzwań rozwiązywanych przez wzorce projektowe
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 2. Odkrywanie platformy Java pod kątem wzorców projektowych
- Wymagania techniczne
- Wstępne poznawanie Javy
- Przedstawienie modelu platformy Java oraz jej możliwości
- JDK
- JRE
- JVM
- Przegląd odzyskiwania pamięci i modelu pamięci w Javie
- JMM
- Odśmiecanie i automatyczne zarządzanie pamięcią
- Przedstawienie podstawowych API Javy
- Podstawowe typy danych i typy opakowujące
- Praca z API klasy String
- Przedstawienie tablic
- Prezentacja frameworka kolekcji
- API operacji matematycznych
- Programowanie funkcyjne w Javie
- Przedstawienie wyrażeń lambda i interfejsów funkcyjnych
- Korzystanie z interfejsów funkcyjnych w wyrażeniach lambda
- Przedstawienie systemu modułów Javy
- Krótki przegląd możliwości Javy z wersji od 11 do 17+
- Składnia zmiennych lokalnych dla parametrów wyrażeń lambda (Java SE 11, JEP-323)
- Wyrażenie switch (Java SE 14, JEP-361)
- Bloki tekstowe (Java SE 15, JEP-378)
- Dostosowywanie wzorców w operatorze instanceof (Java SE 16, JEP-394)
- Rekordy (Java SE 16, JEP-395)
- Klasy zapieczętowane (Java SE 17, JEP-409)
- Domyślnie stosowane kodowanie UTF-8 (Java SE 18, JEP-400)
- Dopasowywanie wzorców w instrukcji switch (Java SE 18, Second Preview, JEP-420)
- Prezentacja współbieżności w Javie
- Od prostych wątków do wykonawców
- Wykonywanie zadań
- Podsumowanie
- Pytania
- Dalsza lektura
CZĘŚĆ 2. Implementowanie standardowych
- Rozdział 3. Kreacyjne wzorce projektowe
- Wymagania techniczne
- Wszystko zaczyna się od klas, które stają się obiektami
- Tworzenie obiektów na podstawie danych wejściowych przy użyciu wzorca Metoda wytwórcza
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Tworzenie obiektów z różnych rodzin przy użyciu wzorca Fabryka abstrakcyjna
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Tworzenie złożonych obiektów przy użyciu wzorca Budowniczy
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Klonowanie obiektów przy wykorzystaniu wzorca Prototyp
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Zapewnianie istnienia tylko jednego obiektu przy użyciu wzorca projektowego Singleton
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Poprawianie wydajności dzięki wykorzystaniu wzorca Pula obiektów
- Uzasadnienie
- Przykłady wykorzystania wzorca w JDK
- Przykładowy kod
- Wniosek
- Inicjalizacja obiektów na żądanie przy wykorzystaniu wzorca Leniwa inicjalizacja
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Zmniejszanie zależności przy wykorzystaniu wzorca Wstrzykiwanie zależności
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 4. Stosowanie strukturalnych wzorców projektowych
- Wymagania techniczne
- Współpraca niezgodnych obiektów dzięki użyciu wzorca Adapter
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Rozdzielanie i niezależne rozwijanie obiektów dzięki użyciu wzorca Most
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Traktowanie obiektów w ten sam sposób dzięki użyciu wzorca Kompozyt
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Rozszerzanie funkcjonalności obiektów przy użyciu wzorca Dekorator
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Upraszczanie komunikacji przy użyciu wzorca Fasada
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Stosowanie warunków do wybierania pożądanych obiektów przy wykorzystaniu wzorca Filtr
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Współdzielenie obiektów w całej aplikacji przy wykorzystaniu wzorca Pyłek
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Obsługa żądań przy wykorzystaniu wzorca projektowego Front Controller
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Identyfikowanie instancji za pomocą wzorca Znacznik
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Poznawanie koncepcji modułów przy wykorzystaniu wzorca Moduł
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Dostarczanie zamiennika przy użyciu wzorca Pełnomocnik
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Odkrywanie wielokrotnego dziedziczenia w Javie za pomocą wzorca Bliźniak
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 5. Operacyjne wzorce projektowe
- Wymagania techniczne
- Ograniczanie kosztownej inicjalizacji przy użyciu wzorca Buforowanie
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Obsługa zdarzeń przy wykorzystaniu wzorca Łańcuch zobowiązań
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Przekształcanie informacji w działanie przy użyciu wzorca Polecenie
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Nadawanie znaczenia kontekstowi przy użyciu wzorca Interpreter
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Sprawdzanie wszystkich elementów przy użyciu wzorca Iterator
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Stosowanie wzorca Mediator do wymiany informacji
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Przywracanie pożądanego stanu przy wykorzystaniu wzorca Pamiątka
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Unikanie wyjątków związanych z wartością null przy użyciu wzorca Obiekt pusty
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Informowanie wszystkich zainteresowanych stron przy użyciu wzorca Obserwator
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Obsługa etapów istnienia instancji przy wykorzystaniu wzorca Potok
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Zmiana zachowania obiektu przy wykorzystaniu wzorca Stan
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Wykorzystanie wzorca Strategia do zmiany zachowania obiektu
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Standaryzacja procesów przy użyciu wzorca Metoda szablonowa
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Wykonywanie kodu w oparciu o typ obiektu przy użyciu wzorca Odwiedzający
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Podsumowanie
- Pytania
- Dalsza lektura
CZĘŚĆ 3. Inne ważne wzorce projektowe i antywzorce
- Rozdział 6. Wzorce projektowe współbieżności
- Wymagania techniczne
- Separowanie wykonania metody przy użyciu wzorca Aktywny obiekt
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Tworzenie nieblokujących zadań przy użyciu wzorca Asynchroniczne wywołanie metody
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Opóźnianie wykonania do momentu ukończenia poprzedniego zadania przy wykorzystaniu wzorca Balking
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Udostępnianie unikalnej instancji przy użyciu wzorca Podwójnie sprawdzane blokowanie
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Stosowanie celowego blokowania wątków przy użyciu wzorca Blokada odczytu-zapisu
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Separowanie logiki wykonania przy wykorzystaniu wzorca Producent-konsument
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Realizacja odizolowanych zadań przy użyciu wzorca Dyspozytor
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Efektywne wykorzystanie wątków za pomocą wzorca Pula wątków
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 7. Popularne antywzorce
- Wymagania techniczne
- Czym są antywzorce i jak je identyfikować
- Zmiana zasad teoretycznych
- Gromadzenie długu technicznego jako wąskie gardło
- Niewłaściwe wykorzystanie możliwości platformy Java
- Wybór odpowiedniego narzędzia
- Podsumowanie antywzorca zapachu kodu
- Badanie typowych antywzorców oprogramowania
- Rozwlekły złożony kod
- Programowanie oparte na kopiowaniu i wklejaniu
- Klucha
- Potok lawy (ang. lava flow)
- Dekompozycja funkcjonalna
- Kotwica
- Wniosek
- Zrozumienie antywzorców architektury oprogramowania
- Złoty młotek
- Ciągłe starzenie się
- Wadliwe dane wejściowe
- Praca na polu minowym
- Niejednoznaczny punkt widzenia
- Poltergeist
- Ślepy zaułek
- Wniosek
- Podsumowanie
- Dalsza lektura
Odpowiedzi
- Rozdział 1. Wprowadzenie do wzorców projektowych oprogramowania
- Rozdział 2. Odkrywanie platformy Java pod kątem wzorców projektowych
- Rozdział 3. Stosowanie kreacyjnych wzorców projektowych
- Rozdział 4. Stosowanie strukturalnych wzorców projektowych
- Rozdział 5. Operacyjne wzorce projektowe
- Rozdział 6. Wzorce projektowe współbieżności
- Tytuł: Wzorce projektowe dla programistów Javy. Udoskonal swoje umiejętności projektowania oprogramowania
- Autor: Miroslav Wengner
- Tytuł oryginału: Practical Design Patterns for Java Developers: Hone your software design skills by implementing popular design patterns
- Tłumaczenie: Piotr Rajca
- ISBN: 978-83-289-0773-7, 9788328907737
- Data wydania: 2024-03-11
- Format: Ebook
- Identyfikator pozycji: wzoprj
- Wydawca: Helion