Often, there is a difference of opinion between IT specialists who make business apps with databases in client-server architecture and those who skipped the client-server architecture altogether and began working on web applications. The former usually (but not always) tend to write their code in the database, while the latter consider the database a “black box”, which often serves only as a data container, while the business logic resides in the application server. There are a lot of other questions. The author thinks that specific needs require consideration. It is important to learn and think, and avoid being narrow-minded and accept a single “truth”. These questions will be considered through the Oracle ADF framework.
To deliver optimal user experience, web applications should have simple navigation and browsing, automatic resolution adjustment to suit the user (whether on mobile devices or desktop computers), minimal loading times, SEO, etc. All of these must be considered when designing a web application today. The Java/JEE ecosystem provides a number of frameworks that can facilitate the development of web applications, but have difficulties fulfilling the above-mentioned conditions. On the other hand , more and more web developers advocate “Single page” applications and JavaScript frameworks which boost development. How to take advantage of existing services (EJB) and introduce them into the world of JavaScript programming (JSON)? Should all data access be organized through an API?
Description and analysis of MEAN stack and underlying technologies (Mongo DB, Express, Angular and Node JS). Review of development tools & techniques. Performance, best practices. Common usage scenarios, pros and cons. How to use it, when to use it, when not to use it.
Need for seamless communication between web browser and back-end server has resulted in technology called WebSocket. In this presentation we will see what is WebSocket and how can we leverage Spring framework and STOMP (Streaming Text Oriented Messaging Protocol) to display GPS coordinates on OpenLayers map in real time.
Konferencija Javantura Zagreb 2014 by HUJAK
Java na klijentskoj strani – ima li budućnosti? by Ivan Vučak
U proteklih nekoliko godina Java se pozicionirala kao tehnologija izrade serverskih komponenti, ali kao da se zaboravlja da se Java koristila iza izradu Rich Internet aplikacija (RIA). Da li je Java konkurentna na području RIA te koliku ulogu u tome imaju razni sigurnosni standardi? Kako održavati postojeće RIA sustave uz općenito nepovjerenje ostalih sustava prema Java klijentskim aplikacijama? U ovom predavanju bavit ćemo se usporedbom Jave s ostalim tehnologijama te pokazati zašto strepimo kod svakog Java update-a.
Konferencija Javantura Zagreb 2014 by HUJAK
Alfresco – Neo4j integracija – nova vrsta CMS aplikacija by Damir Murat
Graph baze imaju mnoge primjene, a jedna od njih je obogaćivanje i novi način pretraživanja i korištenja postojećih podataka. Ako prateći tu ideju povežemo CMS sustav Alfresco (www.alfresco.com) i graph bazu podataka Neo4j (www.neo4j.org), otvara se mogućnost kreiranja nove vrste CMS aplikacija. Dodamo li u mješavinu još i tehnologije kao što su Ext JS, D3.js i Grails, rezultat može biti vrlo atraktivan za krajnjeg korisnika.
Konferencija Javantura Zagreb 2014 by HUJAK
Vert.x – asinkroni, skalabilni i poliglotni framework nove generacije by Mihovil Rister
Vert.x (vertx.io) je relativno novi, asinkroni, poliglotni framework uvjetovan događajima te baziran na JVM-u, a svojevremeno jedan od najpraćenijih projekata na GitHubu. Također, bio je i razlog ozbiljnih napetosti između Red Hata i VMwarea, koje su umalo zaustavile projekt. Cilj ovog predavanja je predstaviti Vert.x svijet, pokazati osnove, te ponuditi najbolja iskustva, prakse i preporuke pri njegovoj uporabi.
To deliver optimal user experience, web applications should have simple navigation and browsing, automatic resolution adjustment to suit the user (whether on mobile devices or desktop computers), minimal loading times, SEO, etc. All of these must be considered when designing a web application today. The Java/JEE ecosystem provides a number of frameworks that can facilitate the development of web applications, but have difficulties fulfilling the above-mentioned conditions. On the other hand , more and more web developers advocate “Single page” applications and JavaScript frameworks which boost development. How to take advantage of existing services (EJB) and introduce them into the world of JavaScript programming (JSON)? Should all data access be organized through an API?
Description and analysis of MEAN stack and underlying technologies (Mongo DB, Express, Angular and Node JS). Review of development tools & techniques. Performance, best practices. Common usage scenarios, pros and cons. How to use it, when to use it, when not to use it.
Need for seamless communication between web browser and back-end server has resulted in technology called WebSocket. In this presentation we will see what is WebSocket and how can we leverage Spring framework and STOMP (Streaming Text Oriented Messaging Protocol) to display GPS coordinates on OpenLayers map in real time.
Konferencija Javantura Zagreb 2014 by HUJAK
Java na klijentskoj strani – ima li budućnosti? by Ivan Vučak
U proteklih nekoliko godina Java se pozicionirala kao tehnologija izrade serverskih komponenti, ali kao da se zaboravlja da se Java koristila iza izradu Rich Internet aplikacija (RIA). Da li je Java konkurentna na području RIA te koliku ulogu u tome imaju razni sigurnosni standardi? Kako održavati postojeće RIA sustave uz općenito nepovjerenje ostalih sustava prema Java klijentskim aplikacijama? U ovom predavanju bavit ćemo se usporedbom Jave s ostalim tehnologijama te pokazati zašto strepimo kod svakog Java update-a.
Konferencija Javantura Zagreb 2014 by HUJAK
Alfresco – Neo4j integracija – nova vrsta CMS aplikacija by Damir Murat
Graph baze imaju mnoge primjene, a jedna od njih je obogaćivanje i novi način pretraživanja i korištenja postojećih podataka. Ako prateći tu ideju povežemo CMS sustav Alfresco (www.alfresco.com) i graph bazu podataka Neo4j (www.neo4j.org), otvara se mogućnost kreiranja nove vrste CMS aplikacija. Dodamo li u mješavinu još i tehnologije kao što su Ext JS, D3.js i Grails, rezultat može biti vrlo atraktivan za krajnjeg korisnika.
Konferencija Javantura Zagreb 2014 by HUJAK
Vert.x – asinkroni, skalabilni i poliglotni framework nove generacije by Mihovil Rister
Vert.x (vertx.io) je relativno novi, asinkroni, poliglotni framework uvjetovan događajima te baziran na JVM-u, a svojevremeno jedan od najpraćenijih projekata na GitHubu. Također, bio je i razlog ozbiljnih napetosti između Red Hata i VMwarea, koje su umalo zaustavile projekt. Cilj ovog predavanja je predstaviti Vert.x svijet, pokazati osnove, te ponuditi najbolja iskustva, prakse i preporuke pri njegovoj uporabi.
In the first part of HUJAK’s community keynote we will look at the continuity of innovation and progress in The World of Java, and it’s bright future. We will highlight global trends and compare them with companies’ interests in Croatia. All this would not have been possible without the ever-present commitment and constant efforts of the Java community.Therefore, in the second part we will show how we can create our future in Java, but also how to influence the future of Java globally. We will talk about HUJAK, our challenges and plans, collaborations and experiences, conferences and meetups, as well as problems that we encounter. An emphasis will be given to the education and the adequacy of knowledge and skills, and we will analyse the needs of the labor market in Croatia, EU, and globally.In the last part we will look into activities in which we participate and help – popularization of Java, education and certification, employment and recruitment, consulting our members and their presentation in the international market.
Prve tri su najvažnije – Skupština HUJAK-a 22.2.2014.
HUJAK
Branko Mihaljević, Stjepan Matijašević, Hrvoje Đurđević, Slavko Žnidarić, Marin Orlić, Aleksander Radovan i Jurica Križanić
Panel diskusija - usporedba Web frameworka (IT Showoff)IT Showoff
Kod izrade web projekta postoje razne mogućnosti odabira frameworka na kojem će se projekt bazirati. Mi smo odlučili izdvojili pet glavnih frameworka te oko njih izgraditi kvalitetnu panel diskusiju.
Vjerujemo da većina developera koji će sudjelovati na IT Showoff konferenciji su barem u jednom trenutku svoje karijere radili web site ili web aplikaciju na nekom od odabranih frameworka. Isto tako, vjerojatnost da su koristili, i temeljito isprobali sve njih, je vrlo mala. Zato nam je cilj putem kompetentnih stručnjaka pokušati publici prenijeti iskustva vezana za pojedine tehnologije, njihova osnovna svojstva, prednosti i mane.
Panelisti su svi od reda pravi majstori svog zanata, te će usporedno proći važna svojstva svakog frameworka i usporediti ga s drugima.
Auditing of business applications is very important especially in online banking because we are working with monetary transactions. Privredna banka Zagreb had an requirement
to implement a flexible system to audit user activity in our online banking for SME clients especialy since are authorization model was rather complex, for that we decided to use api with Java filters and intereceptors on are web application and for storage system we choosed MongoDB NoSQL database. In this presentation we are going to show you how we did it.
The Internet of things (IoT) is a scenario in which objects are provided with unique identifiers and the ability to automatically transfer data over a network without requiring human interaction. The idea is that everything is connected, and is able to provide and use data. So, a water sprinkler will check the weather forecast before watering the lawn, a smart bracelet will notify the ambulance if the person wearing it has a heart attack, and the heating in our apartment will start once it gets a notification from our car that we have left work and are heading home. The presentation will give an overview of enabling technologies for the Internet of things, focusing on the cloud platforms that allow the storage, analysis and usage of device provided data. We will describe the services that such platforms provide, show you how to use them with your own devices, and overview a couple of the most widely used ones.
Software developers historically obsess over the tools they use, and even the smallest software endeavor must have at least some supporting infrastructure. Amphinicy has been in this business for a while, so we’ve tried our share of infrastructure tools; some we’ve kept, some we’ve abandoned, and some we’ve written ourselves. Due to some of our specific clients, we probably run more infrastructure than most, and we pride ourselves on almost all of it being open source. This talk will explore how we deal with software development from an infrastructure and processes perspective – from our repository and build system, through continuous integration and integration testing to formalized code reviews and ideas we might work on next.
Continuous Integration has improved software development process, while deployment of software often does not get as much attention. In this presentation we describe an approach for efficient cloud deployment of highly distributed system which can be quite complex to deal with. DeploymentManager(DM) tool is developed as internal project of Infobip company for managing large number(cca. 250 instances) of internal services in our data centers using automated deployment and controling load balancing software(Apache, HaProxy). With DM tool it is possible to deploy build(jar, war, egg…) on any environment(Windows, Linux) in max 5 minutes, without technical knowledge about deployment process, making Continuous Delivery process fast and simple.
Since the Java 7 update 40 Java Flight Recorder and Mission Control are shipped with the JDK. With these tools it is possible to profile an application not only on a developer computer, but also on production. The overhead of profiling with Flight Recorder is minimal, which allows us to use the profiler on any environment. These profiling tools are relatively new and unfortunately unknown to a lot of developers. This talk will give an overview of Java Flight Recorder and Mission Control so the audience can start profiling their applications afterwards.
During different calculations with decimal numbers in Java we come to problem with using primitive data types and their precision. Especially when we work with a double and we come across of losing precision. Another solution is to use BigDecimal, but still we have a problem of easy writing formula. JCalc open source API provides easy writing formula in Java and maintaining precision offered by the BigDecimal. This talk will cover basic JCalc usage and functionalities of API.
For those who are developing, managing, or planning enterprise Java and business application deployments on Oracle WebLogic Server with Oracle Coherence or Oracle GlassFish Server applications, this session gives a roadmap on how Oracle is evolving this infrastructure to be the next-generation application foundation for its customers to build on in a private cloud setting. Together with Java as a Service Update you will be able to see Oracle’s vision, product plans, and roadmap for this server infrastructure and how it will be used in the rapidly maturing cloud infrastructure space. The session will help you make key decisions about running enterprise applications on Oracle’s enterprise Java server foundation.
ZeroMQ is messaging framework that is aimed for use in scalable distributed and concurrent applications. (In 2011, CERN performed a study to unify middleware solutions used in managing CERN accelerators. In this study they compared CORBA, Ice, Thrift, ZeroMQ, YAMI4, RTI and AMQP, and in the end ZeroMQ showed the best results. Goal of this presentation is to show out why did ZeroMQ win, and what distinguishes ZeroMQ from other messaging solutions. With different examples we will show how to use ZeroMQ with Java on the server side and with JavaScript on the client side.
Drools is a business rule management system (BRMS) with an inference based engine, using an enhanced implementation of the Rete algorithm. Business rules implementations are aimed mostly at developers. However, it is sometimes needed that these rules are readable and understandable by the business analysts. Ideally, they should be able to change rules or even write new ones. Decision table as a form of human-readable rules involve business analysts in creation and maintenance of rules.
Managing rules in a spreadsheet format is very applicable for business analysts since they already use them. An important aspect of business rules is their readability and user friendliness. Looking at a rule, you should immediately have an idea of what it is about.
The aim of this presentation is to present the architecture of the distributed platform, which was created for the purpose of Liferay Cloud Services project of Liferay Inc, the company behind the very popular web portal. Liferay Cloud Services is a set of services that existing customers of the portal should allow easier management of their portal instances, monitoring and installation of patches. For this purpose own platform has been built that runs on Amazon’s Cloud infrastructure (Amazon AWS). Platform must be able to process large amounts of data in real time. The platform itself uses several technologies used together such as Liferay Portal, Apache Cassandra – NoSQL database, Akka – library for building concurrent applications and Amazon SQS – a distributed queue.
From previously developed a simple web application (based on X-Files tv series) the aim will be to set both user authentication and authorization of web resources both for themselves and for the invocation of business components. It’ll be established a minimum security settings, which will be completed with more sophisticated mechanisms. All of these emphasizing the novelties of version 3.x of Spring Security as the use of SPEL, Annotations, Namespace, Java config, etc. Attendees will see many of the features that implements Spring Security to set security mechanisms within JEE applications. The tools to be used are Spring Tool Suite 3.4, Springframework 3.2, Maven 3 and Spring Tc Server 2.9.
Chromecast is a thumb-sized media streaming device that plugs into the HDMI port on your TV. Set it up with a simple mobile app, then send your favorite online shows, movies, music and more to your TV using your smartphone, tablet or laptop. The presentation will first give a quick introduction to Chromecast and similar products, after which the main focus will be on adding Chromecast support for Android applications using ChromecastSDK. This includes going through every step of the process in code, from starting media discovery to find potential Chromecast devices all the way to disconnecting from an existing session. Experiences from integrating Chromecast on RealPlayer Cloud, first app in the world to support casting of local items, will be presented in the end.
In the first part of HUJAK’s community keynote we will look at the continuity of innovation and progress in The World of Java, and it’s bright future. We will highlight global trends and compare them with companies’ interests in Croatia. All this would not have been possible without the ever-present commitment and constant efforts of the Java community.Therefore, in the second part we will show how we can create our future in Java, but also how to influence the future of Java globally. We will talk about HUJAK, our challenges and plans, collaborations and experiences, conferences and meetups, as well as problems that we encounter. An emphasis will be given to the education and the adequacy of knowledge and skills, and we will analyse the needs of the labor market in Croatia, EU, and globally.In the last part we will look into activities in which we participate and help – popularization of Java, education and certification, employment and recruitment, consulting our members and their presentation in the international market.
Prve tri su najvažnije – Skupština HUJAK-a 22.2.2014.
HUJAK
Branko Mihaljević, Stjepan Matijašević, Hrvoje Đurđević, Slavko Žnidarić, Marin Orlić, Aleksander Radovan i Jurica Križanić
Panel diskusija - usporedba Web frameworka (IT Showoff)IT Showoff
Kod izrade web projekta postoje razne mogućnosti odabira frameworka na kojem će se projekt bazirati. Mi smo odlučili izdvojili pet glavnih frameworka te oko njih izgraditi kvalitetnu panel diskusiju.
Vjerujemo da većina developera koji će sudjelovati na IT Showoff konferenciji su barem u jednom trenutku svoje karijere radili web site ili web aplikaciju na nekom od odabranih frameworka. Isto tako, vjerojatnost da su koristili, i temeljito isprobali sve njih, je vrlo mala. Zato nam je cilj putem kompetentnih stručnjaka pokušati publici prenijeti iskustva vezana za pojedine tehnologije, njihova osnovna svojstva, prednosti i mane.
Panelisti su svi od reda pravi majstori svog zanata, te će usporedno proći važna svojstva svakog frameworka i usporediti ga s drugima.
Auditing of business applications is very important especially in online banking because we are working with monetary transactions. Privredna banka Zagreb had an requirement
to implement a flexible system to audit user activity in our online banking for SME clients especialy since are authorization model was rather complex, for that we decided to use api with Java filters and intereceptors on are web application and for storage system we choosed MongoDB NoSQL database. In this presentation we are going to show you how we did it.
The Internet of things (IoT) is a scenario in which objects are provided with unique identifiers and the ability to automatically transfer data over a network without requiring human interaction. The idea is that everything is connected, and is able to provide and use data. So, a water sprinkler will check the weather forecast before watering the lawn, a smart bracelet will notify the ambulance if the person wearing it has a heart attack, and the heating in our apartment will start once it gets a notification from our car that we have left work and are heading home. The presentation will give an overview of enabling technologies for the Internet of things, focusing on the cloud platforms that allow the storage, analysis and usage of device provided data. We will describe the services that such platforms provide, show you how to use them with your own devices, and overview a couple of the most widely used ones.
Software developers historically obsess over the tools they use, and even the smallest software endeavor must have at least some supporting infrastructure. Amphinicy has been in this business for a while, so we’ve tried our share of infrastructure tools; some we’ve kept, some we’ve abandoned, and some we’ve written ourselves. Due to some of our specific clients, we probably run more infrastructure than most, and we pride ourselves on almost all of it being open source. This talk will explore how we deal with software development from an infrastructure and processes perspective – from our repository and build system, through continuous integration and integration testing to formalized code reviews and ideas we might work on next.
Continuous Integration has improved software development process, while deployment of software often does not get as much attention. In this presentation we describe an approach for efficient cloud deployment of highly distributed system which can be quite complex to deal with. DeploymentManager(DM) tool is developed as internal project of Infobip company for managing large number(cca. 250 instances) of internal services in our data centers using automated deployment and controling load balancing software(Apache, HaProxy). With DM tool it is possible to deploy build(jar, war, egg…) on any environment(Windows, Linux) in max 5 minutes, without technical knowledge about deployment process, making Continuous Delivery process fast and simple.
Since the Java 7 update 40 Java Flight Recorder and Mission Control are shipped with the JDK. With these tools it is possible to profile an application not only on a developer computer, but also on production. The overhead of profiling with Flight Recorder is minimal, which allows us to use the profiler on any environment. These profiling tools are relatively new and unfortunately unknown to a lot of developers. This talk will give an overview of Java Flight Recorder and Mission Control so the audience can start profiling their applications afterwards.
During different calculations with decimal numbers in Java we come to problem with using primitive data types and their precision. Especially when we work with a double and we come across of losing precision. Another solution is to use BigDecimal, but still we have a problem of easy writing formula. JCalc open source API provides easy writing formula in Java and maintaining precision offered by the BigDecimal. This talk will cover basic JCalc usage and functionalities of API.
For those who are developing, managing, or planning enterprise Java and business application deployments on Oracle WebLogic Server with Oracle Coherence or Oracle GlassFish Server applications, this session gives a roadmap on how Oracle is evolving this infrastructure to be the next-generation application foundation for its customers to build on in a private cloud setting. Together with Java as a Service Update you will be able to see Oracle’s vision, product plans, and roadmap for this server infrastructure and how it will be used in the rapidly maturing cloud infrastructure space. The session will help you make key decisions about running enterprise applications on Oracle’s enterprise Java server foundation.
ZeroMQ is messaging framework that is aimed for use in scalable distributed and concurrent applications. (In 2011, CERN performed a study to unify middleware solutions used in managing CERN accelerators. In this study they compared CORBA, Ice, Thrift, ZeroMQ, YAMI4, RTI and AMQP, and in the end ZeroMQ showed the best results. Goal of this presentation is to show out why did ZeroMQ win, and what distinguishes ZeroMQ from other messaging solutions. With different examples we will show how to use ZeroMQ with Java on the server side and with JavaScript on the client side.
Drools is a business rule management system (BRMS) with an inference based engine, using an enhanced implementation of the Rete algorithm. Business rules implementations are aimed mostly at developers. However, it is sometimes needed that these rules are readable and understandable by the business analysts. Ideally, they should be able to change rules or even write new ones. Decision table as a form of human-readable rules involve business analysts in creation and maintenance of rules.
Managing rules in a spreadsheet format is very applicable for business analysts since they already use them. An important aspect of business rules is their readability and user friendliness. Looking at a rule, you should immediately have an idea of what it is about.
The aim of this presentation is to present the architecture of the distributed platform, which was created for the purpose of Liferay Cloud Services project of Liferay Inc, the company behind the very popular web portal. Liferay Cloud Services is a set of services that existing customers of the portal should allow easier management of their portal instances, monitoring and installation of patches. For this purpose own platform has been built that runs on Amazon’s Cloud infrastructure (Amazon AWS). Platform must be able to process large amounts of data in real time. The platform itself uses several technologies used together such as Liferay Portal, Apache Cassandra – NoSQL database, Akka – library for building concurrent applications and Amazon SQS – a distributed queue.
From previously developed a simple web application (based on X-Files tv series) the aim will be to set both user authentication and authorization of web resources both for themselves and for the invocation of business components. It’ll be established a minimum security settings, which will be completed with more sophisticated mechanisms. All of these emphasizing the novelties of version 3.x of Spring Security as the use of SPEL, Annotations, Namespace, Java config, etc. Attendees will see many of the features that implements Spring Security to set security mechanisms within JEE applications. The tools to be used are Spring Tool Suite 3.4, Springframework 3.2, Maven 3 and Spring Tc Server 2.9.
Chromecast is a thumb-sized media streaming device that plugs into the HDMI port on your TV. Set it up with a simple mobile app, then send your favorite online shows, movies, music and more to your TV using your smartphone, tablet or laptop. The presentation will first give a quick introduction to Chromecast and similar products, after which the main focus will be on adding Chromecast support for Android applications using ChromecastSDK. This includes going through every step of the process in code, from starting media discovery to find potential Chromecast devices all the way to disconnecting from an existing session. Experiences from integrating Chromecast on RealPlayer Cloud, first app in the world to support casting of local items, will be presented in the end.
Scala is an alternative JVM language with both object-oriented and functional programming paradigms. Scala development with the Java EE 7 platform is definitely possible and can be a pleasant experience. If you have uncertainty about how Scala can fit around the Java EE 7 platform, then this session aims to illustrate the huge benefit that Scala adoption can bring to the platform. Many other developers are taking advantage and the challenge of the JVM’s capability of being a vessel for multi-language programming. You no longer have to write every single project using Java, even if you like Lambdas experiences. For the developer and engineering terms that feeling a little braver than usual, Scala is attractive as it is strongly typed and lets you set the gauge on how object oriented or how functional you want to be. You will learn how to reuse the annotations and creating Scala plain object safely and concisely. This session will highlight and contrast the experience I had developing Scala solutions with Java EE, and there will be plenty of advice about using the functional programming features against the Java object oriented API.
Scala language overview
Java EE 7 architecture and design
WildFly 8 application server
Using Gradle as a build tool
How to create beans in Scala with dependency injection
JAX-RS endpoints
Servlet Endpoints
JMS Messaging
Scala adoption advice and hints for sustainable team development
Log, or historical storage of system events, has always occupied central place in architectures of all traditional databases and analytical systems, but nowadays it serves more and more as backbone of modern distributed systems. Some of architectures and tools which use this type of data storage will be presented – Kafka message broker, Datomic database, CQRS/Event-sourcing architecture …
It feels like we have building web sites and applications for centuries, doesn’t it? However, we know that this is so untrue, because the web is only 25 years old since Sir Tim Berner’s Lee great proposal at CERN. The impetus of online design and development has changed, we now talk about the Digital Worker, the Digital environment and we about building web applications and ecommerce applications that are user friendly and customer centric. So what has this all to with the humble Java application developer? The answer is everything. We must be explicit in the software that we write, lean and agile in the way we write, and whilst making sure the take full advantage of the underlying Java platform. In fact, because we have this magnificent Java Virtual Machine and open standards like Java EE, we can continue build quality, robust and sustainable software for all our stakeholders and business users.
Introduction to Java EE 7 (brief)
Personality requirements for the digital worker
The absolute minimum toolchains for Java based digital worker
Introducing Arquillian framework
Overview of some essential features of Java EE 7
Modern business is exposed to various influences, inspiring and confining. This means that you must take into account their economic interest (e.g. profit), its social role (social responsibility) and relationship to the environment (ecology). Applying best practices stated in the ISO standards helps firms to find harmony in all of these requirements and ensure that you develop in the long terms. Certifying those management systems company receive independent confirmation of its authenticity, which raise their reputation with customers, employees and other stakeholders. The paper gives an overview on the expected demand in the near future and possible applications in the industry, particularly in the business of software development.
Non-functional testing is an important, but often ignored step in the process of developing applications. Gatling is a tool that enables us to simulate load, performs the associated measurement and presents the results of the performance testing. Why is Gatling detected by the ThoughtWorks radar? Because it is based on Akka, Netty and Scala technologies and so this lecture will show that writing performance scripts don’t have to be boring. With the concept and methodology of performance testing, using Gatling, the author will present personal experiences from previous projects testing the JVM applications.
Vaadin is a framework for building rich web applications. Vaadin features server-side architecture where all of the business logic is located on server and only presentation layer is located on client side. Server-side architecture can be advantage since session state is stored on server. Statefulness can also be a disadvantage since server is frequently contacted. Obviously, the big mystery is scalability which is the main „pros and cons“ Vaadin battle. The question is, is Vaadin capable of satisfying the needs of an application that requires thousand of concurrent active users.
GWT (formerly “Google Web Toolkit”) stands today as a proven and robust Java framework for rich Internet applications used both as a standalone framework and as a base for some higher level frameworks like Vaadin and Errai. From its inception in 2006. it went through one major overhaul in 2009. (GWT 2.0) and after apparently dormant last few years is successfully open sourced and is preparing for next major revision – GWT 3.0 planned for release in summer 2014. This presentation covers major objectives for version 3.0 like Java 8 compatibility, new widget model based on Web Components, better JavaScript integration through JS Interop and new development mode called SuperDevMode.
When developing software, due to short implementation deadlines, there is very little room for what is considered a key stage: testing. This means testing needs to be efficient and simple for implementation and execution. Selenium is a testing framework for web application, which uses DOM interaction for testing. It can be easily integrated with JUnit, and with the help of WebDriver API, testing for all popular web browsers can be simulated, in addition to web applications adapted to mobile devices. Also, it can be used in interaction with a large number of programming languages. Testing is done from a point of view of the application user, which enables realistic testing scenarios and acceptance tests. In our presentation, we will show an example of using Selenium and present its most important functionalities.
NoSQL offers unprecedented schema flexibility by storing information as independent documents. This kind of flexibility comes with a price of sacrificing referential integrity on the altar of the informal specification. But, the industry is far from giving up on old school SQL. Migrations are solved through explicit database migrations, whether through a quagmire of XMLs or hand crafted ALTER statements. But, there are better ways. We will demo some home grown tooling which has went a bit further and generates database migrations by examining model evolution. Live migration examples will show that it is, in fact, possible to teach an old dog new tricks through advanced Oracle features, effectively bringing NoSQL into SQL.
U Srcu razvijamo, održavamo i dajemo podršku za veliki broj sustava, gdje se svaki sastoji od niza servisa i aplikacija, broj aktivnih korisnika ide i preko 150.000 (uglavnom iz akademske zajednice), a ti sustavi rade na raznim platformama (Java, .Net, PHP, ...). Potrebe i želje korisnika za doradama, nadogradnjama i proširenjima sustava konstantno rastu kako rastu i sami sustavi. Kako bi i dalje uspješno pratili potrebe korisnika smatramo da nam treba Platform as a service (PaaS) kao temelj za daljnji razvoj i održavanje naših sustava. U prezentaciji je prezentirano u kojim segmentima rada nam PaaS može pomoći.
Projektna dokumentacija za Mob Ellposs, mobilni informacijski sustav za skladišno poslovanje. Mob Ellpos je zajedničko rješenje tvrtki KORIS d.o.o. i Ellabo d.o.o. te je u svakodnevnoj uporabi u skladišnom poslovanju Ellaba. Ova projektna dokumentacija je ogledni primjer kako KORIS d.o.o. "obavlja posao" projektiranja informacijskog sustava radi daljnjega razvoja. Dokumentacija se može smatrati kao jedan od isporučenih dokumenata - "deliverable" - prema TOGAF paradigmi. Po ovoj dokumentaciji razvijeno je mobilno rješenje za skladišno poslovanje temeljeno na Android aplikaciji, dotnet Core REST web-servisima i MSSQL bazi podataka.
Vert.x (vertx.io) je relativno novi, asinkroni, poliglotni framework uvjetovan događajima te baziran na JVM-u, a svojevremeno jedan od najpraćenijih projekata na GitHubu. Također, bio je i razlog ozbiljnih napetosti između Red Hata i VMwarea, koje su umalo zaustavile projekt. Cilj ovog predavanja je predstaviti Vert.x svijet, pokazati osnove, te ponuditi najbolja iskustva, prakse i preporuke pri njegovoj uporabi.
Javantura, Zagreb, 2014.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. Stipe Predanic
Predavanje iz Dinamičkih web aplikacija, 11. predavanje
Video: https://www.youtube.com/watch?v=0othfQg9AP8&list=PLYqeapOP_CtS0kbdbo_GXFgnS81JGAd8L&index=12
Tema: Izrada web aplikacija za mobilne uređaje
Datum snimanja: 19.5.2016
Branimir Šloser - Razbor IT (IT Showoff)IT Showoff
Program RazborIT je web aplikacija za upravljanje projektima financiranim iz pretpristupnih fondova Europske unije. Dizajniran je za potrebe provedbe projekata financiranih iz PHARE I IPA programa dodjele bespovratnih sredstava u Hrvatskoj (tzv. grant shema), no primjenjiv je i u drugim zemljama koje provode pretpristupne programe po pravilima za vanjsku pomoć EU.
Aplikaciju smo radili oko 3 mjeseca, potrošeno je oko 400 sati. Sve skupa je rađeno na RoR-u i na predavanju bi više pričao o tehnikama i principima korištenim pri izrade same aplikacije, nego što bi pokazivao kako aplikacija radi.
Više o projektu: http://www.razborit.com/
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Behaviour-Driven Development (or TDD for that matter) is one of the pillars of Software Quality. While it is very important, not many of us do it or do not have the support from the management to invest time in it. Commonly, it has been described as a waste of time or an intangible effort conflicting with the deadlines. In this presentation, I would like to share my experiences with the Behaviour-Driven Development, the effects of not having it at all, as well as the outcomes of working on projects where a significant amount of behavior is automated with Cucumber tool.
By attending this session you will be able to learn what BDD and Cucumber are, how to build Cucumber tests and hear about first-hand experiences around automating specifications.
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader - Daniel Strmečki
Your success depends on others, a 1-man army can only achieve so much. The only way to progress from coder to leader is to learn how to scale yourself. Nowadays, you can become a Senior Developer with just a few years of experience. After that, there are many roads and possibilities you can take. Whether you decide for a developer, architect, manager or a mixed career, at one point, you will need to become a leader. In the first chapter of the lecture we will start a discussion on how to get there. Since your time is limited, you need to mentor, coach, motivate and engage others. Start with making a stable foundation, like setting up a proper onboarding process. If you help people around you, they will for sure talk about it, and your manager will hear it. Also, demonstrate ability in everyday work: coding, project management, client-focus, communication and care about others. Always stick to your values and keep high standards. In the second chapter we will discuss the challenges that turn up once you get there. At that point you will deal with people more than technology. You will need to step away from coding for meetings very often. Interruptions will happen every day and it we be very hard to maintain “the flow”. You will need to learn how to delegate and drive topics without implementing them yourself. Visit the lecture to find out some techniques for dealing with interruptions, meetings, prioritization, people and their motivation.
The State of Java and Software Development in Croatia (Community Keynote) by dr. sc. Branko Mihaljević, Aleksander Radovan, and doc. dr. sc.Martin Žagar at the 8th International Java Conference in Croatia - JavaCro '19
In this community keynote by HUJAK, we want to present and compare the current state of Java and related software development in Croatia, our part of Europe, and worldwide. Therefore, we will start by discussing the latest global trends in software development and what does it mean in our rapidly evolving world full of new technologies based on IoT, Machine Learning and AI, Blockchain, Virtual Reality, and Robotics, to which we must respond to ASAP. Of course, when addressing those contemporary technology trends, we will focus mostly on our country and the region. In the other part, we will discuss the major events in the world of Java that happened in the last few years since Java 8 and Java 9/10/11 were widely adopted. We will see what Java 11 and 12 brought us and what developers are mostly using (or not) and why, as well as what will be there interesting in Java 13 and beyond, including new features from incubator projects Amber and Valhalla, and new ideas from projects Loom, Panama, Skara, and Metropolis. Once again, we are going to take a typical developer’s point of view on software development challenges in this part of Europe, and we will discuss the future of our software developers from the perspective of how to become one (educational institutions and practice) and how to get/earn a good job (local employers and the job market). We intend to close this keynote with details of (y)our favorite Java community aka HUJAK.
This is a story about our exploration of aspects of Polyglot Programming and Memory Management in a (J)VM. The first part is focused on our research of performance of GraalVM, an open-source, high-performance polyglot virtual machine written in Java, as well as an accompanying Graal compiler, supporting JIT and AOT compilation, with outstanding inlining and escape analysis algorithms. In the second part we are dealing with aspects of automatic memory management and garbage collection analysis in an existing JVM, thus comparing the most commonly used (older) garbage collectors such as Serial, Parallel (Old), CMS, and G1, with contemporary and default Parallel Full G1, and new experimental ZGC and Shenandoah, across several JDKs using a common benchmark suite.
We develop an application prototype with Java and Hyperledger Fabric to facilitate people in the company to sell domestic goods to each other using marketplace application. Java and SmartGWT were used to develop UI, part of data were stored in the relational DBMS, while orders and balances were stored on the blockchain, specifically Hyperledger Fabric.
Bugs happen! It is a developers life fact. Let'e explore one way we the developers can help customers to make batter bug reports.
During lifecycle of systems and applications that support complex and long running business processes it is often the challenge to get accurate bug report. In this talk we will present one custom developed solution that we used on several our projects as well as our experiences in using this approach.
With several years of remote work experience in an agile environment, working from beautiful Zagreb for clients abroad and trying out different distributed team setups, we will share the motivation and philosophy behind it. We will also cover best practices, challenges and general tips & tricks in different segments such as work organisation, technical requirements, social requirements, methodology etc.
This talk is recommended for all developers who want to start working remotely or improve the way they already do it, employers who consider establishing distributed teams inside of their companies and clients searching for partners who have distributed teams.
While Kotlin is designed to work well with Java by default, we'll still need to some work to get clean and idiomatic code in both languages.
In this talk we'll cover both how to make your Java code more Kotlin friendly and how to make your Kotlin code nicer to use from Java.
HATEOAS is without a doubt, the least understood pillar of REST. It seems difficult to implement and shows no immediate reward for it, so many developers don't even bother. The truth is, it just has some bad PR and a horrible acronym that sounds like a breakfast cereal. Join me to take a look at the theory and practice behind using hypermedia by examining both web services and web clients. Along the way we will look at some exciting upcoming Spring HATEOAS features, like the Affordances API, and talk about what the future holds for hypermedia in your web services.
In the last few years we witnessed big changes in how we actually build, deploy and run applications with the rise of Microservices Architectures, Containers, Kubernetes, and DevOps practices. Those amazing improvements need a cultural shift
based on continuous improvement and learning in order to deliver business value and delight our customers.
But how could a team achieve this ambitious goal?
This talk will introduce the attendees to a revolutionary open source project, called Jenkins X, which attempts to achieve this goal. It is basically a reimagined CI/CD Ecosystem for Kubernetes built around Jenkins, either with a classical master or leveraging knative serverless functions.
After this talk, attendees will be able to develop effectively in a cloud native way in any language on any kubernetes cluster!
Let's forget Scrum and be truly Agile! Finally!
Individual microservices are relatively easy to develop, but managing a distributed system composed of microservices is never a simple task. Kubernetes helps, but it falls short of providing everything such a system needs. This is where the Istio Service Mesh comes in.
Running microservices in production, you'll soon realize you want things like traffic splitting, automatic connection retries, timeouts and failovers, secure communication and authentication between your services, distributed metrics, tracing and logging. By introducing Istio into your architecture, you get all of that and more. And you get most of it without changing your code at all.
In this talk, you'll see a demonstration of Istio in action and learn about the tricks that make its magic possible.
Do your customers keep complaining about bugs in your software application? Does it take you too much time to implement new features? If yes, then you probably have issues with the quality of your application. Join me to find out what practical steps you can follow to improve the quality of your application!
We are used to give commands to our computers with keyboard - by natural language recognition improvement, services around this technology stack become better and better each day. Using Google Home mini device, IFTTT service and java web socket netty server hosted on red hat Openshift platform, control your loving private computer terminal or any application from distance with your bare voice.
Quality control during apps development demands continuous testing. Selenium, Cucumber, Jenikns and Docker can help us in that process. Hrvoje will share his experience about that subject.
Bugs are a daily cause of stress in our work as Java developers. Those pesky things can hide behind core concepts in Java 9 and 10—there is no way out of this. If we don’t keep up to date with new Java versions, bugs will take over our projects. But can we have fun hunting them? You bet! How about solving a series of Java puzzles as a way to master concepts and save a lot of time finding those tricky bugs? In this session, attendees can help the bug hunters solve fun Java challenges, gain a clear understanding of what causes the most-stressful bugs—and have fun eliminating them from projects.
In H2020 EU project symbIoTe (symbiosis of smart objects across IoT environments) we have been building IoT middleware based on microservices programmed in Java with Spring Boot and Spring Cloud components. Here I will present our experiences in developing such services in distributed team across EU and employed by 15 organizations. I will present organizational and technical advantages and drawbacks as well as our choices in building such system.
More from HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association (20)
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
JavaCro'14 - Is there a single “correct” web architecture for business apps – Zlatko Sirotić
1. DA LI POSTOJI SAMO JEDNA
"ISPRAVNA" ARHITEKTURA
WEB POSLOVNIH APLIKACIJA
Stranica 1ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Zlatko Sirotić, univ.spec.inf.
Istra informatički inženjering d.o.o.
Pula
2. Malo marketingaMalo marketinga ☺☺
Stranica 2ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
3. Autor je (bar neko vrijeme) radioAutor je (bar neko vrijeme) radio
s programskim jezicima / alatima:s programskim jezicima / alatima:
- "Assembler" za Texas Instruments TI-58 kalkulator (1981.)
- Fortran, BASIC (1982.)
- Pascal, Assembler za Zilog Z80 (ZX Spectrum) (1983.)
- Cobol, dBASE III, Prolog (1984.)
- ADS (Application Development System (1985. – 1999.)
Stranica 3ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- ADS (Application Development System (1985. – 1999.)
- Oracle Database, Designer, Forms, Reports (1995. - )
- Eiffel, C, C++ (1998. - )
- Java (2003. - )
- Scala (2012. - )
- Oracle ADF (2013. - )
4. Neki autorovi radovi zadnjih godinaNeki autorovi radovi zadnjih godina
- HrOUG 2013: Transakcije i Oracle - baza, Forms, ADF
- CASE 2013: Što poslije Pascala? Pa … Scala!
- HrOUG 2012: Ima neka loša veza
(priča o in-doubt distribuiranim transakcijama)
- CASE 2012a: Utjecaj razvoja mikroprocesora
Stranica 4ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- CASE 2012a: Utjecaj razvoja mikroprocesora
na programiranje
- CASE 2012b: Konkurentno programiranje u Javi i Eiffelu
- HrOUG 2011: Kriptografija u Oracle bazi
- CASE 2011: SOA i poslovna pravila
- HrOUG 2010: Biometrijski sustavi – greške i ranjivosti
- CASE 2010: Revizija sigurnosti Oracle SUBP-a
5. TemeTeme
U ovoj prezentaciji razmatraju se (i) sljedeća pitanja:
- Da li je izrada web poslovnih aplikacija postala previše
kompleksna?
Stranica 5ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- Da li pisati programski kod za integritet podataka i kod za
poslovnu logiku samo u bazi, samo na aplikacijskom serveru,
samo na klijentu, ili nekom kombinacijom toga?
- Da li u bazi uvijek imati samo jednog usera
za pristup iz web aplikacije, ili je u redu "stari" način rada:
jedna osoba = jedan user na bazi?
6. TemeTeme (nastavak)(nastavak)
U ovoj prezentaciji razmatraju se (i) sljedeća pitanja:
- Da li konekcija između baze i aplikacijskog modula treba biti
stalna ili privremena (na primjeru Oracle ADF-a)?
Stranica 6ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- Da li veza između korisničke sesije u web pregledniku i
aplikacijskog modula treba biti stalna ili privremena (ADF)?
- Kako baratati s transakcijama?
HTTP je stateless - želimo li atomarne transakcije?
Ispravno rukovanje transakcijama vrlo je bitno
za poslovne aplikacije.
7. Da li jeDa li je izrada web poslovnihizrada web poslovnih aplapl..
postalapostala previše kompleksna?previše kompleksna?
Mogućnosti DBMS sustava se stalno povećavaju (plavo).
No, negdje poslije 2000. godine, te se mogućnosti
sve manje koriste (crveno). (Prezentacija Toon Koppelaars-a)
Stranica 7ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
8. Da li je izrada web poslovnihDa li je izrada web poslovnih aplapl..
postala previše kompleksna?postala previše kompleksna?
Prosječan developer nekada je mogao naučiti
alat za izradu poslovnih aplikacija za par tjedana.
Danas mu treba i par godina.
Stranica 8ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
9. Da li je izrada web poslovnihDa li je izrada web poslovnih aplapl..
postala previše kompleksna?postala previše kompleksna?
Gdje se može pisati programski kod
u (standardnoj) JEE arhitekturi:
Stranica 9ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
10. Da li je izrada web poslovnihDa li je izrada web poslovnih aplapl..
postala previše kompleksna?postala previše kompleksna?
Različiti pristupi pisanju tankog ili debelog koda u različitim
arhitekturnim slojevima; 1. varijanta je najčešća
8. varijanta (sve tanko) ne postoji – ipak treba nešto (i)
programirati
Stranica 10ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
11. Kamo stavitiKamo staviti
određeni programski kod?određeni programski kod?
Može se reći da poslovne aplikacije imaju
tri vrste programskog koda:
- Kod za rad s korisničkim sučeljem.
- Kod za poslovnu logiku. On se može podijeliti na kod za
Stranica 11ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- Kod za poslovnu logiku. On se može podijeliti na kod za
čitanje podataka iz baze i kod za ažuriranje podataka u bazi.
Kod za ažuriranje podataka u bazi vrlo često koristi (i) čitanje
podataka iz baze.
- Kod za osiguravanje integriteta podataka u bazi. Često se
ovaj kod brka s kodom za poslovnu logiku, pa nije čudno da
se u praksi često isprepliću kod za poslovnu logiku i kod za
osiguravanje integriteta podataka.
12. Kamo stavitiKamo staviti
određeni programskiodređeni programski kod?kod?
Programski kod za rad s korisničkim sučeljem,
kod web aplikacija može se nalaziti:
- Na strani aplikacijskog servera, što je najčešće. U JEE
arhitekturi riječ je o Java servletima (ili nadogradnji servleta,
kao štu su JSP, JSF i dr.).
Stranica 12ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
kao štu su JSP, JSF i dr.).
- Na strani klijenta. Najčešće se danas takav kod piše u
JavaScriptu, a relativno rijetko u Javi kao Java applet.
- Na strani baze, što je dosta rijetko. Takvu arhitekturu ima
npr. Oracle APEX alat, kod kojeg se HTML stranice dinamički
generiraju pomoću APEX-ovih PL/SQL paketa na bazi.
13. Kamo stavitiKamo staviti
određeni programskiodređeni programski kod?kod?
Programski kod za poslovnu logiku,
kod web aplikacija može se nalaziti:
- Na strani aplikacijskog servera, što je vrlo često. U JEE
arhitekturi riječ je o najčešće o EJB-ovima.
Stranica 13ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- Na strani baze. Riječ je o tzv. pohranjenim (stored)
procedurama / funkcijama i paketima na bazi. Vrlo često se
na strani baze sprema programski kod za tzv. batch obradu.
Činjenica je da se najčešće najbrže izvršava upravo kod (za
poslovnu logiku) koji se nalazi na bazi.
- Na strani klijenta gotovo nikad, čak niti kad se na klijent strani
nalaze Java appleti.
14. Kamo stavitiKamo staviti
određeni programskiodređeni programski kod?kod?
Programski kod za osiguravanje integriteta podataka u
bazi, kod web aplikacija može se nalaziti:
- Na strani baze. Najčešće se koriste deklarativna integritetna
ograničenja baze, kao što su integritetna ograničenja za
jedinstveni ključ (UK), vanjski ključ (FK) i check constraint
(CK).
Stranica 14ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
(CK).
Iako je SQL standard još od 1992. uključio CREATE
ASSERTION naredbu, praktički niti jedan SQL DBMS
sustav ju ne podržava (nedavno su se pojavili ne-SQL
relacijski DBMS sustavi koji ju podržavaju).
Zbog toga, kada se programski kod za osiguravanje
integriteta podataka želi u cijelosti pisati na strani baze, mora
se pribjeći korištenju okidača baze (proceduralni pristup).
15. Kamo stavitiKamo staviti
određeni programskiodređeni programski kod?kod?
Programski kod za osiguravanje integriteta podataka,
osim na bazi, može se nalaziti:
- Na strani aplikacijskog servera. Ovo je vrlo čest pristup u
praksi. Želja da se izbjegne (dosta mukotrpna) realizacija
integriteta podataka pomoću okidača baze često se navodi
kao dovoljan razlog za ovakav izbor. No, time se omogućava
Stranica 15ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
kao dovoljan razlog za ovakav izbor. No, time se omogućava
da baza bude nezaštićena (u smislu integriteta, ne u smislu
sigurnosti podataka općenito). Naime, jedna aplikacija može
savršeno čuvati integritet podataka u bazi, dok, nažalost,
druga aplikacija može biti tako pisana da to ne osigurava.
- Na strani klijenta. Vrlo često se tako rade samo jednostavnije
provjere integriteta podataka, koje su istovremeno realizirane
i na strani aplikacijskog servera ili/i baze.
16. KolikoKoliko userausera imati na bazi?imati na bazi?
U klasičnim klijent-server aplikacijama, obično se radilo tako
da je svaki korisnik (osoba) imao svoj vlastiti pristup u bazu,
tj. svoj vlastiti korisnički račun (user, shemu) na bazi. Broj
korisnika (osoba) obično je bio reda par stotina (ili manje), i
svi korisnici su bili poznati (neanonimni).
Vrlo često web aplikacije rade se puno većim brojem
Stranica 16ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Vrlo često web aplikacije rade se puno većim brojem
korisnika (osoba), koji su često i anonimni. Tada izgleda
logično da se napušta nekadašnji pristup: jedan korisnik
(osoba) = jedan korisnički račun (user) na bazi. Najčešće se
uz aplikacijsku shemu (kojih može biti i više, npr. jedna za
tablice, a druga za pakete na bazi) radi samo jedan korisnički
račun (user).
No, time se neminovno smanjuje sigurnost baze.
17. KolikoKoliko userausera imati na bazi?imati na bazi?
Nije loše koristiti srednji pristup, kod kojeg se odrede različite
vrste korisnika (osoba), a onda se za svaku vrstu korisnika
napravi poseban korisnički račun (korisnička shema) na bazi.
Na taj način, ako netko provali u bazu kroz korisnički račun
koji ima manja prava, ne može raditi ono što bi mogao da je
provalio kroz korisnički račun sa većim pravima.
Stranica 17ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
provalio kroz korisnički račun sa većim pravima.
No, ponekad se i kod web aplikacija može primijeniti "stari
pristup", ako su svi korisnici poznati (neanonimni) i ako ih
nema više od nekoliko stotina. Tada se kao prepreka
pojavljuje činjenica da se kod web aplikacija često koristi pool
konekcija na bazu (connection pool), pa se ne želi da svaki
korisnik ima svoj poseban pool. No, tome se može doskočiti
primjenom tzv. proxy korisničkog računa.
18. OracleOracle FormsForms alatalat
Oracle Forms je Rapid Application Development (RAD) alat,
koji je Oracle napravio početkom 80-ih, nedugo nakon
nastanka Oracle baze verzije 2 (verzija 1 nije nikada
postojala), i radio je kao znakovno orijentirana (character
mode) aplikacija na serveru.
Sredinom 90-ih napravljena je klijent-server GUI varijanta.
Stranica 18ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Sredinom 90-ih napravljena je klijent-server GUI varijanta.
Klijent-server varijanta pratila je baze 6, 7 i 8, a Forms verzije
bile su 4, 4.5, 5, 6 i 6i. U Forms verziji 6 pojavila se paralelno i
web varijanta - Web Forms.
Nakon verzije 6i, klijent-server varijanta više ne postoji, tj.
verzije od 9i do 11gR2 (verzije 7 i 8 nikad nisu postojale)
rade isključivo kao web Forms aplikacija
(koja nije baš jeftina).
19. OracleOracle FormsForms
-- klijentklijent--server varijantaserver varijanta
Oracle Forms je izvorno pisan u jeziku C, a i sadašnji kod je
uglavnom C kod, osim Java appleta (koji se izvršava u
pregledniku), te određenih pomoćnih dijelova na AS-u.
Developeri u Forms-ima mogu koristiti jezik
PL/SQL (Forms ima svoj vlastiti PL/SQL engine),
SQL (koji se šalje bazi) i specijalne Forms naredbe (koje
Stranica 19ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
SQL (koji se šalje bazi) i specijalne Forms naredbe (koje
baza nema, uglavnom su to naredbe za korisničko sučelje).
U novijim verzijama može se koristiti i Java.
U klijent server varijanti, Forms aplikacija se u cijelosti
izvršava na klijentu, koji komunicira sa bazom preko
jedne konekcije, a kroz tu konekciju može ići više sesija baze,
tako da svaki Forms aplikacijski modul može imati (ne mora)
vlastitu sesiju baze.
20. OracleOracle FormsForms –– web varijantaweb varijanta
Stranica 20ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
21. OracleOracle FormsForms
-- web varijantaweb varijanta
Web varijanta radi tako da Java applet na klijentu
(koji se brine samo za kreiranje korisničkog sučelja)
surađuje sa Forms servisom na aplikacijskom serveru.
Forms servis manje-više čini onaj isti kod (pisan u C-u)
kao i u klijent-server varijanti.
I u ovoj varijanti:
Stranica 21ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
I u ovoj varijanti:
- Forms servis drži stalnu konekciju s bazom;
- korisnik stalno drži Forms module s kojima radi,
sve dok ne završi rad.
U suštini, ovaj način rada nema nekih značajnih razlika
u odnosu na klijent-server rad.
22. Oracle ADF (Oracle ADF (ApplicationApplication
Development Framework)Development Framework)
6 mjeseci nakon što je Sun izdao verziju Jave 1.0, u Oracleu
su odlučili raditi RAD alat temeljen na jeziku Java. Prvo
izdanje frameworka, koji se tada nije zvao ADF već JBO
(Java Business Objects), uslijedilo je 1999. godine. Ubrzo mu
je ime promijenjeno u BC4J (Business Components for Java).
BC4J je pokrivao onaj dio koji danas pokriva ADF BC.
Stranica 22ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
BC4J je pokrivao onaj dio koji danas pokriva ADF BC.
Uz BC4J, Oracle je počeo razvijati i odgovarajući IDE
JDeveloper, licencirajući 1998. tadašnji Borlandov alat
JBuilder. Oracle je 2001. temeljito preradio JDeveloper, pri
čemu ga je u potpunosti "prepisao" u Java kod.
Ubrzo je termin BC4J zamijenjen sa ADF.
Od 2005. godine Oracle JDeveloper IDE je besplatan.
Verzija ADF Essentials je besplatna od ljeta 2012.
23. Oracle ADFOracle ADF -- strukturastruktura
Stranica 23ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
24. OracleOracle ADFADF –– razvoj slojevarazvoj slojeva
Za razliku od "nižeg" dijela, tj. ADF BC-a (bivšeg BC4J-a),
"viši" dio, koji se odnosi na Controller i View dio MVC (Model
View Controller) arhitekture, razvijao se u velikim skokovima,
što je pratilo uobičajena zbivanja u cijeloj softverskoj industriji
vezanoj za Java web aplikacije.
Poznato je da su se dinamičke stranice u JEE arhitekturi prvo
Stranica 24ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Poznato je da su se dinamičke stranice u JEE arhitekturi prvo
radile u servlet tehnologiji. Na temelju nje nastala je JSP
(Java Server Pages) tehnologija. Oracle je ubrzo uvidio da te
tehnologije nisu dovoljno produktivne, jer ne omogućavaju
odgovarajuće module ili komponente, pa je razvio svoju
specijalnu tehnologiju UIX (User Interface XML).
Na neki način, UIX su preteča standardne JSF (Java Server
Faces) tehnologije, čija je (usavršena) varijanta i ADF JSF.
25. ADF BCADF BC EntityEntity ObjectObject (EO)(EO)
Dvije EO definicije (koje predstavljaju npr. dvije tablice na
bazi) mogu biti povezane asocijacijom, koja je najčešće
nastala iz FK veze među tablicama na bazi.
Stranica 25ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
26. ADF BCADF BC EOEO
i zaključavanje redakai zaključavanje redaka
Moguća je postavka za određeni AM ili za cijelu aplikaciju.
Moguće vrijednosti:
- None: ništa se ne radi;
- Pessimistic: ne preporuča se za web aplikacije, jer čim netko
pokuša promijeniti bilo koji podatak retka, redak ostaje
Stranica 26ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
pokuša promijeniti bilo koji podatak retka, redak ostaje
zaključan do kraja transakcije;
- Optimistic: optimističko zaključavanje (default); zaključava
redak tek na kraju, pa tada provjerava da li su stare
vrijednosti polja iz retka jednake onima koje su sada na bazi;
može se ubrzati pomoću svojstva Change Indicator;
- Optupdate: slično kao optimističko zaključavanje, ali bez
zaključavanja, pa ne pruža istu sigurnost.
27. ADF BCADF BC ViewView ObjectObject (VO)(VO)
Stranica 27ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
28. Upit nad BC VOUpit nad BC VO--omom
Kada se izvodi upit (query) nad VO, može se odrediti koji će se
izvor podataka koristiti:
- Scan database tables: čita se baza, što je podrazumijevano
(default) ponašanje; postavlja se programski sa
vo.ViewObject.QUERY_MODE_SCAN_DATABASE_TABLES;
Stranica 28ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- Scan view rows: čita se query collection (kolekcija prvo mora
biti napunjena upitom na bazu); postavlja se programski sa
vo.ViewObject.QUERY_MODE_SCAN_VIEW_ROWS;
- Scan entity cache: čita se entity cache (moguće je samo za
VO temeljene nad EO); postavlja se programski sa
vo.ViewObject.QUERY_MODE_SCAN_ENTITY_ROWS.
Također, VO omogućavaju
sortiranje i filtriranje redaka u memoriji.
29. ApplicationApplication Module (AM)Module (AM)
Stranica 29ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
30. DijeljeniDijeljeni ((sharedshared))
aplikacijskiaplikacijski modulimoduli
Često je potrebno dijeliti podatke između više korisničkih
sesija.
Korisnička sesija nije isto što i sesija baze, jer se jedna
korisnička sesija može realizirati kroz više sesija baze, što
je standardno u web aplikacijama.
Stranica 30ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Za potrebe dijeljenja podataka, ADF ima tzv. dijeljene (ili
zajedničke - shared) AM instance.
AM instanca može biti dijeljena na razini aplikacije
(application level shared application module), pa tada svi
korisnici koriste istu AM instancu i vide iste podatke, ili
samo na razini korisničke sesije (session level shared AM),
gdje AM koje se nalaze u istoj aplikacijskoj sesiji, ali unutar
drugog vršnog AM, ne vide podatke iz tako dijeljene AM.
31. Kako pomiritiKako pomiriti statelessstateless HTTPHTTP
protokol iprotokol i statefulstateful transakcijetransakcije
Stranica 31ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
32. Kako pomiritiKako pomiriti statelessstateless HTTPHTTP
ii statefulstateful transakcijetransakcije -- kolačićimakolačićima
Stranica 32ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
33. ApplicationApplication ModuleModule poolpool
ii ConnectionConnection poolpool (parametri)(parametri)
Stranica 33ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
34. ConnectionConnection poolpool
Postoje dvije vrste connection poolova, koje se koriste u
ovisnosti o tome da li se konekcije konfiguriraju kao JDBC
URL konekcije, ili JNDI name for a data source konekcije. Ako
se koriste JDBC URL konekcije, samo tada se koristi ADF
connection pool, a inače se koristi connection pool AS-a.
Osnovno pravilo za ADF connection pool je: po jedan
Stranica 34ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Osnovno pravilo za ADF connection pool je: po jedan
connection pool (dakle, skup konekcija, a ne jedna konekcija)
se kreira za svaki par <JDBCURL, Username> na svakom
JVM-u, pri čemu konekciju dobiva samo root AM instanca
(ugniježđene AM instance koriste tu istu konekciju).
Veza između AM instance i konekcije (iz connection
poola) je po defaultu stalna, ali se može postaviti da nije
(čime se u pravilu narušavaju performanse).
36. ApplicationApplication ModuleModule poolingpooling
-- stanja AMstanja AM--ovaova
AM pool je kolekcija AM instanci iste vrste. AM pool
omogućava da veći broj korisnika može (kvazi) istovremeno
raditi na manjem broju AM instanci.
AM instanca u poolu može biti u jednom od tri stanja:
- bezuvjetno slobodna za korištenje bilo kom korisniku;
Stranica 36ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- slobodna za korištenje, ali referencirana na aplikacijsku
sesiju koja ju je prethodno koristila i koja još nije završila; u
ovom slučaju AM instanca može se ipak predati drugom
korisniku, ovisno o tzv. AM State Management Release
Levelu, pri čemu će standardno doći do tzv. pasivizacije
(a kasnije aktivacije) AM instance;
- zauzeta, kad neki korisnik (odnosno, njegova Java dretva
na AS-u) trenutačno koristi tu AM instancu.
37. ApplicationApplication ModuleModule poolingpooling
-- varijante otpuštanja AMvarijante otpuštanja AM--ovaova
Kod vraćanja AM instance u AM pool, postoje tri varijante
otpuštanja (release levels):
- Managed (default): AM pool preferira zadržati istu AM
instancu za istog korisnika, ako je to moguće; ako nije
moguće, radi se pasivizacija AM instance (podaci se
smještaju u bazu, rjeđe u datoteku), a kasnije se radi
Stranica 37ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
smještaju u bazu, rjeđe u datoteku), a kasnije se radi
aktivacija (druge) AM instance;
- Unmanaged: nikakvo stanje se ne pamti;
- Reserved: veza 1 : 1 između AM instance i korisnika;
podsjeća na Forms način rada; nije preporučljiva za web
aplikacije, iako je najjednostavnija!
- "Reserved AM release level considered harmful,
considered harmful." ☺☺☺☺
38. ApplicationApplication ModuleModule poolingpooling
-- testiranje pasivizacijetestiranje pasivizacije
Kao dio testiranja aplikacije, vrlo je preporučljiva praksa da se
AM testiraju sa konfiguracijskim parametrom
jbo.ampool.doampooling postavljenim na false.
Takva postavka zapravo forsira pasivizaciju i aktivaciju
kod svakog zahtjeva, čime se mogu naći greške koje bi
se javile tek u malom broju slučajeva normalnog rada.
Stranica 38ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
se javile tek u malom broju slučajeva normalnog rada.
Npr. ako u jednom HTTP request-response paru postavimo
varijablu u paketu na neku vrijednost, u drugom HTTP
request-response paru (iste aplikacijske sesije) očekivali
bismo da se pročita ista vrijednost; no, kod pasivizacije to više
neće biti tako, jer drugi HTTP par može dobiti drugu AM
instancu, što znači i drugu sesiju na bazi.
39. ZaključakZaključak
Izrada web poslovnih aplikacija postala je previše
kompleksna. No, ponekad je moguće neke stvari
pojednostaviti.
Npr. nije isto da li radimo web aplikaciju za manji broj
poznatih korisnika, ili ogroman broj nepoznatih korisnika.
Barem ponekad, dobro je pisati programski kod za integritet
Stranica 39ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Barem ponekad, dobro je pisati programski kod za integritet
podataka i kod za poslovnu logiku (uglavnom) u bazi,
a ne (uglavnom) na aplikacijskom serveru (što je uobičajeno).
Zbog (ne)sigurnosti, nije dobro u bazi uvijek imati samo
jednog usera za pristup iz web aplikacije.
Dobro je uvesti više razina usera, pa čak i "stari" način rada
jedna osoba = jedan user na bazi (uz upotrebu proxy usera).
40. ZaključakZaključak
Ako radimo sa Oracle ADF-om, poželjno je raditi tako da
konekcija između baze i aplikacijskog modula bude stalna
(što je default), ne samo zbog boljih performansi, već i zbog
lakšeg rada s transakcijama.
Po našem mišljenju, veza između korisničke sesije (u web
pregledniku) i aplikacijskog modula treba kod poslovnih
Stranica 40ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
pregledniku) i aplikacijskog modula treba kod poslovnih
aplikacija biti Reserved, a ne Managed (što je default), kod
kojega (Managed) može doći do pasivizacije / aktivacije
AM-a, što otežava rad s transakcijama.
Nažalost, često developeri gledaju na DBMS sustav kao na
"crnu kutiju". Nemaju vremena za dublje upoznavanje s
mogućnostima konkretnog DBMS-a, drže da su svi DBMS-ovi
vrlo slični, žele pisati generički kod (neovisan o DBMS-u) itd.