Najboljše iz obeh svetov: uporaba javanskih knjižnic v .NET

Slides:



Advertisements
Podobne predstavitve
USTVARJALNOST.
Advertisements

OKOLICA ŠOLE – DO KODER NAM SEŽE POGLED
Preberite te nasvete, če želite izvedeti, kako: 1 Prilagodite logotip
Odprti dostop do znanstvenih podatkov v Sloveniji
Dejavnostno naravnano učenje
Specialne knjižnice Specialni knjižničarji = informacijski strokovnjaki Predavanje 2 Izr. prof. Primož Južnič
K O M B I N A T O R I K A   Obravnava posebne naloge povezane s končnimi množicami. Kompleksija je podmnožica končne množice Število elementov v kompleksiji.
7/1/2019 6:19 PM ©2004 Microsoft Corporation. All rights reserved.
Rootkits Miha Pihler, MCSA, MCSE, MCT, CISSP,
Tekmovanje mladih raziskovalcev
Naslov projekta Vaše ime | Ime učitelja | Šola
Michelangelo buonarroti
Upravljanje identitet v oblaku in avtentikacija
STROKOVNI POSVET FLEKSIBILNI PREDMETNIK IN AKTUALNI IZZIVI OSNOVNE ŠOLE TIMSKO IN MEDPREDMETNO POUČEVANJE Z ROKO V ROKI POD POGOJI FLEKSIBILNEGA PREDMETNIKA.
IZRAELSKI KURIKULUM Adriana Jordan.
Going with the Flow: Uporaba Microsoft Flow v praksi
PISA 2009 z vidika značilnosti učencev
Trinivojska arhitektura v sistemih za obračunavanje storitev
Različni pogledi na ukrepe za preprečevanje fluktuacije v organizaciji
Prostorski razvoj Slovenije in energetska učinkovitost
7/3/2019 6:08 AM SQL in GDPR: Uporaba SQL funkcionalnosti za prilagoditev BI/DWH okolja GDPR zahtevam mag. Gašper Cotman, vodja področja omrežij in varnosti,
Postopek prodaje vozila
NEMŠKI KURIKULUM IN PRIMERJAVA S SLOVENSKIM
SI-STAT podatkovni portal Novosti v letu 2005
SI-STAT podatkovni portal
Upravljajmo SQL Server z odprto kodo
VSEŽIVLJENJSKO IZOBRAŽEVANJE – izziv za prihodnost
DATOTEKE - povzetek open(ime,'w') datPisi = open(ime,'w')
Strukturirano logiranje v .NET Core
Naj bo IT investicija ali strošek?
Poročilo o delu in akcijski načrt za projekt Učenje učenja ŠC NM Srednja šola Metlika šolsko leto 2011/2012.
Ukrep Vseživljenjsko učenje Podaktivnost
SOLVIT SOLVIT je sistem za pragmatično reševanje problemov, preko katerega lahko države članice s skupnimi močmi rešujejo probleme, ki nastanejo zaradi.
Ozaveščanje o Direktivi o okoljski odgovornosti v Sloveniji
Informacijska rešitev za agregacijo DEA flote v RTP V okviru slovensko-japonskega sodelovanja na področju pametnih omrežij, t.i. NEDO projekta Tomaž Buh.
Model neformalnega izobraževanja september, 2018
Uporaba LOGGER PROja Aktiv fizikov SEŠTG
E-marketing in Merkur: Marketing Internet Communications of Merkur
Pomen in potenciali pametnih mest in skupnosti Blaž GOLOB Direktor, SmartIScity d.o.o. EU forum za digitalno podjetništvo.
SMERNICE SVETA EVROPE ZA SODELOVANJE JAVNOSTI PRI ODLOČANJU
Zgodovina Računalnikov
Predstavitev projekta PPF II
SVETOVNI SPLET (s programom MS Windows Internet Explorer
Automated BI solution With Excel in 60 minutes
USTVARJALNOST.
Jure Dimec, Janez Stare & posadka IBMI
Linus Benedict Torvalds.
Ime izdelka.
Google docs Predmet: Uiktp.
predmet: uporaba IKT pri poslovanju
Dr. Samo Rugelj 21. maj, 2014 NEKAJ PREMISLEKOV O VREDNOTENJU KAKOVOSTI KNJIG ZA ODRASLE NA SLOVENSKEM dr. Samo Rugelj 21. maj,
Modulacija in demodulacija signalov (prirejeno po gradivu avtorja N
Nero StartSmart.
Predstavitev programa google chrome 6
Ko BaaS v MS Azure zamenja tračno knjižnico
HUB, SWITCH Avtor:Križanič Mišel.
Postavitev šolske ustave in njena nadgradnja
Objekti, razredi, ... Od kje in zakaj.
IZBIRNI PREDMET V 7.,8. in 9. RAZREDU DEVETLETKE
Pogostost Danj je seznam klicanih številk
Fire Wall ( Požarni zid )
Breadboard eletrotehnika.
Avtomatizacija v industriji in gospodarstvu, Maribor
 LOGOTIP.
Razpoznava govora z usmerjeno nevronsko mrežo
M. Šifrar: Rakete na vodni pogon
OD MINIMALNIH STANDARDOV K ODLIČNOSTI
Andrej Grah a.k.a. Burgola
»ACE THE CASE« masterclass
Šolsko leto [vstavite leto] Ime šole Ime učitelja Razred
Zapis predstavitve:

Najboljše iz obeh svetov: uporaba javanskih knjižnic v .NET 7/16/2019 5:22 AM Najboljše iz obeh svetov: uporaba javanskih knjižnic v .NET Marko Kokol, Semantika d. o. o. marko.kokol@semantika.eu © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Agenda Kratek pregled motivacije – zakaj? Pristopi 7/16/2019 5:22 AM Agenda Kratek pregled motivacije – zakaj? Pristopi Demo: uporaba preproste knjižnice Predstavitev Lucene Predstavitev postopka pretvorbe kompleksne knjižnice Demo: pretvorba Lucene © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

7/16/2019 5:22 AM Zakaj? © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Izzivi „portanja“ Vir: https://xkcd.com 7/16/2019 5:22 AM © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

.NET vs Java: uporaba na spletnih straneh – vodi .NET 7/16/2019 5:22 AM .NET vs Java: uporaba na spletnih straneh – vodi .NET Vir: https://w3techs.com/technologies/comparison/pl-aspnet,pl-java © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

.NET vs Java: uporaba na spletnih straneh – vodi .NET 7/16/2019 5:22 AM .NET vs Java: uporaba na spletnih straneh – vodi .NET Vir: https://w3techs.com/technologies/comparison/pl-aspnet,pl-java © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

.NET vs Java: število projektov – vodi Java Vir: https://octoverse.github.com/

Povzetek Za Javo obstaja precej odprtokodnih knjižnic, za katere v .NET svetu ni ekvivalentov, precej zaostajajo v razvoju ali so pod manj ugodnimi licencami. Primera: Lucene PDFBox

Lucene Vir: https://lucenenet.apache.org/ in https://lucene.apache.org/ (maj 2018)

PDFBox (vs ITextPDF)

PDFBox vs PDFSharp Vir: https://github.com/apache/pdfbox/graphs/code-frequency in https://github.com/empira/PDFsharp/graphs/code-frequency

7/16/2019 5:22 AM Kako? © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Pristopi integracije Nekaj pristopov: Šibko sklapljanje (npr. spletne storitve), npr. ElasticSearch Uporaba „mostov“, kot so IPC mostovi, npr. https://jnbridge.com Pretvorba knjižnic iz java -> .NET Prepis (Lucene -> Lucene .NET) Samodejna pretvorba Težava uporabe mostov je, da še zmeraj potrebujemo Java VM.

Primerjava pristopov integracije Šibko sklapljanje Mostovi Pretvorba Zahteva JVM DA NE „Overhead“ Visok Majhen Najnižji Teče v istem procesu Neposredna integracija objektov

Pristop s samodejno pretvorbo kodo Kaj potrebujemo: Implementacijo ključnih Java razredov v .NET Java -> CLR prevajalnik (compiler) Precej razširjena implementacija: IKVM.NET (https://www.ikvm.net/) Opomba: avtor je projekt v aprilu 2017 prenehal aktivno razvijati, kar pomeni, da lahko z IKVM.NET mogoče pretvarjati samo knjižnice, kompatibilne z Javo 8.

Glavne značilnosti IKVM.NET Vsebuje povsem delujoč javanski virtualni stroj (Java VM), implementiran v .NET Vsebuje implementacijo javanskih knjižnic Vsebuje prevajalnik iz jave (bytecode) v CLR Uporabljamo ga lahko torej kot javanski virtualni stroj, ali da javanske knjižnice prevedemo v .NET IL.

Še beseda o generikih Generiki so v Javi in CLR implementirani različno Java generike odstrani v fazi prevajanja kode To pomeni, da javanske knjižnice v .NET pričakujejo ne-generične različice Vector<MyType> -> Vector Tega ni mogoče spremeniti

Kaj bomo naredili? Knjižnico PDFBox.jar bomo pretvorili v PDFBox.dll Pogledali, da je dejansko pretvorjena v .NET Uporabili knjižnico v preprostem projektu

7/16/2019 5:22 AM DEMO © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

7/16/2019 5:22 AM Lucene © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Kaj je Lucene? Lucene je rešitev za polno besedilno iskanje (full text search) in ena izmed najbolj razširjenih knjižnic v ta namen na svetu Napisana je v Javi in je osnova za dobro znane produkte za iskanje in analitiko v podjetjih in po velikih zbirkah (npr. Solr, ElasticSearch) Deluje na podlagi indeksiranja t.i. dokumentov in podatke hrani v lastni obliki, pri čemer uporablja obrnjeno kazalo (reverse index) Sestavljena je iz več posameznih modulov, ki jih je potrebno pretvoriti

Kako se torej lotimo pretvorbe v 2 korakih: najprej pripravimo enotni javanski paket (JAR), ki vsebuje vse želene module paket lahko dodatno poljubno obdelamo JAR paket, da npr. spremenimo imena paketov in/ali metod (velike začetnice imen metod, …) Pretvorimo JAR v .NET DLL (IL) Kaj potrebujemo: jar pakete Lucene proguard za združevanje / transformacijo JAR IKVM za pretvorbo JAR v IL Obstaja že GitHub repozitorij in NuGet paket s skriptami za uporabo IKVM z Lucene: https://github.com/FlexSearch/FlexLucene - vendar ni vzdrževan

Kaj bomo naredili? Posamezne Lucene.JAR datoteke s pomočjo skripte pretvorili v skupno datoteko Pogledali, da je dejansko pretvorjena v .NET

7/16/2019 5:22 AM DEMO © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

7/16/2019 5:22 AM © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.