Prawdopodobnie to jest głupie pytanie, za co przepraszam.
Czy w aplikacjach Java EE wykorzystuje się IO, NIO? Z książek wywnioskowałem, że we/wy w tych aplikacjach to: bazy danych, pliki XML i interfejs użytkowania klienta.
To zależy od aplikacji jak nie trudno sie domyślić. Jeśli aplikacja musi czytać jakieś dane z serwera to można korzystać ze zwykłego I/O.
Hmm może swoich sweet fotek nie, ale raporty PDF ? masz konto w banku ? możesz ściągnąć wyciągi online ? to się nie bierze z nieba. Może jakiś sales będzie chciał wysłać exela przez wewnętrzny system. To nie corner case - to standard.
NIO2 jest wykorzystywane do implementacji serwerów aplikacyjnych. Ma to w szczególności związek z obsługą nieblokującego wejścia - wyjścia wykorzystywanego np. w JAX-RS 2.0 oraz asynchronicznych servletach.
Poczytaj o serwerze Grizzly (używany w GlassFishu):
https://grizzly.java.net/
Nawet typowe aplikacje mają potrzebę wysyłać pliki do użytkownika. W takiej sytuacji bez sensu jest pakować całe te pliki do pamięci tylko trzeba je sensownie 'wystrumieniować' do klienta. Dla tego mimo wszystko warto poznać chociaż podstawy NIO
Jeszcze inną możliwością poza NIO jest strumieniowanie z bazy danych NoSQL jaką jest MongoDB (mam na myśli GridFS):
http://api.mongodb.org/java/current/com/mongodb/gridfs/GridFS.html
Poszedłbym w to gdybym musiał obsługiwać duże pliki np. filmy.
Fajną rzeczą jest podział danych na chunks, co umożliwia tworzenie aplikacji np. typu youtube: streamujemy plik od pewnego momentu.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.
niezdecydowanyniezdecydowany