Oppgavene tar for seg litt av det som er nytt i java9 og java 10.
Merk at Git bash ikke anbefales for jshell-oppgaver, men kan benyttes ved å kjøre "winpty jshell".
NB! Har du en settings.xml som er endret for å fungere for prosjektet ditt? Da bør du endre tilbake til standard settings.xml.
Javadoc:
- Start opp jshell
- Skriv inn "Hello, World!" og trykk enter.
- Print "Hello, World!" ved å bruke $1.
- Modifiser variablen til "JShell - Hello, World!".
- Definer til en navngitt streng som innehar samme tekst (ved å assigne verdi fra variablen).
Observer at semikolon ikke er nødvendig i JShell (når man er i ren jshell-context).
- Skriv /help for å se en oversikt over kommandoer
- Finn ut hvilke pakker som er importert
- Finn verdien av 151230951 + 502801459 i jshell
- Finn kvadratroten til 2053449225 i jshell (tips -> benytt tab for å få frem dokumentasjon)
- Lag en metode som returner doblet inputverdi, og bruk den for å doble en vilkårlig verdi
- Lagre sesjonen til en fil og lukk jshell
- Åpne jshell igjen, og hent inn lagret sesjon. Verifiser at metoden som ble opprettet i forrige sesjon er tilgjengelig
Forhold deg til følgende 2 moduler:
- calculator
- utils
Sett opp korrekte exports og requires, og få koden til å kompilere. Verifiser med å kjøre RunMe.java i calculator-modulen.
Oppgaven består av 3 moduler
- calculator
- utils
- printer
Bytt ut System.out.println i klassen Calculator i calculator-modulen med Printer.println fra printer-modulen, og få koden til å kompilere
Oppgaven består av 1 modul
- gui
Verifises ved å kjøre RunMeApplication.java.
NB! Det er to mulige løsninger på utfordringen. Prøv begge :)
Benytt javadocen for å sette opp en HTTP2-client og gjør synkrone kall mot http://www.vondess.com/dovre/api. Link til Javadoc
Vurder følgende:
- Hva er spesielt med jdk-modulen klienten ligger i?
- Bør den benyttes i produksjonskode?
Endre klienten fra oppgave a) til å være asynkron. Legg inn Thread.sleep(5000) før du sjekker om det har kommet respons.
NB! Husk å kansellere requestet hvis det ikke har kommet respons.
- Lag en liste med navn i jShell vha Collection Factory-metoder (Se f.eks List. , eller finn frem i javadoc)
- Skriv listen til en fil: navn.txt Observer at man ikke trenger å forholde seg til checked exceptions når man opererer i jshell (utenfor metoder etc)
- Lag et Set og et Map
- Forsøk å legg til et nytt element i listen Observer at collections opprettet via Collection Factory-metoder er immutable.
Bruk dropwhile, takewhile og utfør følgende:
- Gitt en strøm av tall fra 1-100, print alle tall > 50
- Gitt en strøm av tall fra 1-100, print alle tall < 50
- Lek litt med var - deklarer noen objekter - hvorav noen er generics
- Lag en for løkke med var
- Lag en metode som returnerer var og se hva som skjer
- Lag en klasse med member deklarert som var og se hva som skjer
- Lag en metode som returnerer en Map<String, String> og deklarer returverdien som en lokal variabel med var
- Gitt overstående - gjør deg selv noen tanker om den nye variablen ** Hvordan kan dette påvirke lesbarhet ** Er dette en positiv eller negativ endring av språket
- Lag en liste som inneholder duplikater på 'tradisjonell måte'
- Konverter denne til et set
- Print ut settet, og forsøk å legge til et nytt element.
- Gitt en strøm av tall, opprett en immutable liste av tallene
- Lag en Optional som inneholder null
- Ta i bruk ny metode som kom med java 10
- Sammenlikn med Optional.get og Optional.orElseThrow((Supplier<? extends X> exceptionSupplier) og gjør deg noen tanker om lesbarhet
Få testene i DemoInterfaceTest.java til å gå grønt uten å utvide interface med nye metoder.
- Legg til commons-lang3 på classpath Last den ned, eller legg til i pom og bygg prosjektet- Havner isåfall her: ~/.m2/repository/org/apache/commons/commons-lang3/3.6/commons-lang3-3.6.jar importer org.apache.commons.lang3.*
- Ta en kikk på metodene som StringUtils tilbyr
- Gjør en sjekk i jShell vha StringUtils for å finne ut av om en streng inneholder kun bokstaver. Gjør tilsvarende for "kun tall" "Abcde1" "Abcde" "92465945" "a92465945"
- Hvis du har nyeste versjon av Intellij - alst konsollet
-
Opprett et image vha Jlink Se her for hjelp: http://openjdk.java.net/projects/jigsaw/quick-start Blir litt lav-nivå pga foreløpig manglende verktøystøtte. Jlink-plugin fra maven finnes i alpha-1, men fremstår som buggy.
-
Hvor ofte trenger du Corba i jdken din?
-
Sammenlikn størrelsen på imaget og jdken
-
Tenk gjennom hva bruk av Jlink kan bety for størrelsen på f.eks docker-containere
- Finn på noen morsomt å gjøre selv, relatert til java 9 og 10