Java EE 7 Websocket API

Jahas, tuli testailtua hieman upouutta Websocket API:a joka on osa Java EE 7 julkaisua ja jo siis käytössä ja pelaa. Ytimeltään yksinkertainen kapistus; lisä-annotaatioilla voi tehdä serveripulikan joka voi puskea yhdelle tai useammalle asiakkaalle päivityksiä Websocket standardin mukaan. Päädyin yksinkertaiseen testikoodiin:

 

@ServerEndpoint("/chat")
public class ChatSocket {
  @OnMessage
  public String onMessage(String message) {
      try {
        Thread.sleep(5000);  // Wait 5sec to simulate asynch operations
      } catch (InterruptedException ex) {
          ex.printStackTrace();
      }
      return "BACK AT YA:" + message;
  }

}

Client päässä jotain tällaista:

var wsUri = "ws://" + document.location.host + "/WebSocketTest/" + "chat";
var ws = new WebSocket(wsUri);
ws.onmessage = function (evt) { var received_msg = evt.data; alert("Message is received..." + received_msg); };
ws.send("Message to send");

 

Testaillessa menikin sitten hetki ihmetellessä miksei toimi. Onneksi tajusin vaihtaa selainta. Jostain kumman syystä oman koneen Chrome eteni openiin asti, mutta send jäi juntturaan. Firefox pelitti hienosti. Tämä havainto pitää yhtä pessimistisen näkemykseni kanssa siitä miten tulevat web ’standardit’ tulevat toimimaan eri selaimissa ja mobiililaitteissa. Tosin tämäkin varmaan fiksattavissa ja voi olla palvelinpuolenkin oireilua, mutta pääpointti on se että triviaali demo toimii yhdessä, ei toisessa. Hieman hienosäätöä siis vaaditaan vielä.

 

Mutta hauskaa, helppoa tekniikkaa. Tällä voi rakennella chattikanavia, osakekurssi push päivityksiä, tai mitä eventtejä nyt haluaa seuratakaan, erilaisia jaettuja brainstorming whiteboardeja, dashboardeja, sävellysvimpaimia, etc.

 

 

Villikärpänen ja maksulliset aikavyöhykkeet

Ollut hieman vilskettä viime aikoina joten bloggaaminen on jäänyt, mutta tutkaan osui taas pari mielenkiintoista uutista joista tässä lyhyttä kommenttia:

Ensinnäkin hyvää syntymäpäivää WildFly! Suosittu Open Source sovelluspalvelin JBOSS sai uuden version myötä nimenmuutoksen ja on nyt WildFly. Hieman on vielä totuttelemista nimeen, mutta onhan se persoonallinen ja tarttuva 😉 WildFly 8 tulee olemaan Java EE 7 yhteensopiva ja heittäisin arvauksen että siinä ei mene kauaakaan aikaa..

Oracle on vetänyt mielenkiintoisen linjauksen, muuttamalla tzupdater työkalunsa vain maksullisen tuen piiriin. Työkalu on ollut käytössä kun osa aikavyöhykkeistä muuttuukin dynaamisemmin kuin Java releaset ehtivät pysymään perässä, ja työkalu on päivittänyt Java ympäristön aina oikeaan Olson timezone tietokannan pohjalta. Nyt sitä ei siis ole enää saatavana – maksutta. Kaupallisen tukipaketin myötä tietysti on, ja luonnollisesti uudet Java julkaisut tulevat aina tuorein aikavyöhyketiedoin varustettuna.

Onko tuolla merkitystä? Ei itselleni, en ole tuota vimpainta käytellyt koskaan, mutta pistipä vain silmään. Siitä on lisää keskustelua täällä:

http://www.theserverside.com/discussions/thread.tss?thread_id=75820

[EDIT] Ja päivityksenä: Oracle julkaisi uuden tiedon jonka mukaan Java 7 saa kuitenkin tzupdater työkalun päivitykset ilmankin maksullista tukea. Java 6 alkaa olla vaikeassa rakosessa, se ei saa tzupdater päivitystä, ja sen lataamiseenkin täytyy nykyään omata Oracle community tunnukset. Eli vain tuorein versio saa aina rakkautta avoimen maksuttoman käytön suhteen. Java 8 julkaistaneen näillä näkymin helmikuussa ensi vuoden puolella.