Posts Tagged ADF

“Regulatorics: Offside is when the referee whistles” – I’m a speaker at #DOAG2018

Today my presentation is confirmed: “Regulatorics: Offside is when the referee whistles”. Maybe the German title will be  better understood: “Regulatorik: Abseits ist, wenn der Schiedsrichter pfeift”

The regulatory system has more and more influence on our software development.

Regulatory authorities, external and internal Auditors are increasingly examining our IT and not longer only our business processes and balance sheets.
Some of them have better trained IT experts as we can find on the free market.

General standards such as ISO/IEC 2700X but also banking-specific standards such as BAIT and MaRisk now pose challenges that generally only large software manufacturers know.
Approximately 40 % of our projects are now regulatory-driven.

Therefore, we are currently redefining our development process in order to implement the following requirements, among others
– Unchangeability of the tested artefacts after the test
– Functional segregation
– Detection of accidental changes or intentional manipulations of the application

The lecture shows the vision of such a safe process. It shows the current status of implementation in SOA and ADF development, for example

– Migration of version management to GIT in Atlassian BitBucket
– Application and selection criteria for a branching model
– Mandatory code reviews in Atlassian BitBucket
– Build and Deployment Pipelines in Jenkins
– Automatic documentation in JIRA Issue via Bitbucket and Jenkins.

Maybe you too can minimize the additional work and continue to work agile to meet such requirements.

If you speak german and you are interested in some of this, you should come and attend DOAG 2018.

, , , , , , , , , , , , , , , , ,

Leave a comment

#DOAG2017 wrap up

doag_wegweiser

Another DOAG is over and here are my summary.

Day 1

As my presentation is planned for noon I arrived this year on the evening before, so I could attend the early sessions on 8:30.

Sten Vesterli: APEX, ADF, or ABCS? A real-life application built in 3 tools

He compares the development of a real application in APEX, ADF and ABCS. He don’t believe that ABCS is usable from end users and shows interesting problems with the date pickers in APEX and ADF.

Welcome by DOAG and Oracle

Stefan Kinnen from DOAG welcomes the attendees and gives an short overview for the conference. The part of the Kenneth Johansen from Oracle was very dry in the contrast.

Keynote: Neil SholayTracking the Inevitable (How to plan for likely and disruptive business scenarios.)

Quite the reverse the colleague of Kenneth Johansen. He present interesting views about the ongoing disruption in every business and how to prepare for this. Unfortunately the presentation is not available for download.

Markus Lohn: Road to the (Oracle) Cloud

The next title was pure understatement. As I know Markus expanded his talk to the details of a complex SOA & ESB migration report, which most of the attendees sure does not expect. I think at least my boss not :-). I left this a little earlier as now I had to go to stage.

Torsten Kleiber: PL/SQL: Therefore test automation for those who bind themselves forever!

After several presentations about ADF and the related development life cycle I decided this year to speak about the selection process of a PL/SQL testing tool. Additional I promised to do some of this last year. The room was packed with round about 100 people, which I unfortunately never reached with ADF in the past. Despite some technical problems when starting and in the demo’s all went fine and I will thank again all my attendees. You find my presentation additional here:

Because of some discussion with my attendees and lunch I skipped the next slot.

Sabine Heimsath, Jan Karremans: #DBADev – Like dog and cat? It doesn’t have to be!

This was a “lightweight” simulated battle between DBA and > as DB developers. I little bit oversimplified, but ok, unfortunately I seen none of our DBA’s in the audience.

Alexander Weber: Cloud service – heaven and hell (application and data away)

This was report> from a real world oracle database cloud customer with an APEX app. Maybe I will remind me to look at his experience, when we will ever go the cloud.

Bryn Llewellyn: Ten Rules for Doing a PL/SQL Performance Experiment

Bryn shows how to best analyze and broke down a performance problem and the idea’s are often not restricted to PL/SQL. Lession learned “Don’t use SET TIMING ON”, as this includes additional network roundtrips.

Elmar Juergens: The sow does not get fat from weighing: PL/SQL quality analysis

I see already a similar presentation from Elmar Juergens at Javaland 2017. Same message this time. Additional he recommend to measure at first only the changed source code via a diffing algorithm to only identifying the changed lines. Most tools can’t this. Will have a look at his own tool sometime. Additional our bosses want Elmar Juergens for a presentation for our developers. Will look if this will change their minds an they will look a least a bit more at the existing measured violation.

Day 2

Markus Klenke: Better, more beautiful, more modern: barely used beads in ADF

Markus likes ADF and show this. Fine that he is at our company site to help us with this.

Daniel Hillinger, Tobias Deml: Battle: Database Virtualization

First at the beginning the decision was made, who of the both is pro and who is contra. Nice format to find the arguments for this. I’ve learned that all databases in the same virtualization farm has to be the same license and options, if you want not to pay to much. Additional it’s not usual to begin if you have fewer than 100 database instances.

Thorsten Wussow: Let the orchestra play –- Docker orchestration and visualization

Unfortunately, my expectations were disappointed here because most demos didn’t work. Not a good start to use the technology.

Dominic Weiser: Continuous integration in database development

This was another nice database CI presentation which contains utPLSQL, and the presenter had enough time to show the CI part on Jenkins too. Similar you can find in my upload too, but I had enough time in my talk to present.

Duncan Mills: Web Components, the Oracle Way

Duncan describes how to define and use own components in Oracle Jet as professional as ever. Unfortunatly I see that he has moved from ADF product management to JET architecture team now.

Michael Schulze: Tools for diagnosing Weblogic (FMW) performance problems 

A surprice for me – lot of new tools and information for my toolchain.

Markus Lohn: Quo Vadis Agile Software Development

Again Markus on the stage. He shows his Agile project experiences on several customers and I’m not sure  if he mentioned us or not.

Bryn Llewellyn: Guarding your Data Behind a Hard Shell PL/SQL API – the Detail

Bryn shows here a security model for how accessing the data via an secure API which contains of 4 schema layers: data, code, implementation, API. Unfortunatly this is not really good handled by some of Oracle own development frameworks like ADF despite you develop only on the rest API on top. But definitely give it a try.

Roland Dürre, Knud Johannsen, Christian Botta: Creative communication

The paintings was good but the rest was very esoteric presentation of philosophic messages. I think I was to inspired by the vita of mr. Botta when selected this slot, this was what I had expected.

Before the evening keynote Ulrike Schwinn was awarded, congratulations! Over my career I heard a lot of presentations from her, which was impressive, none where I’m not learned something new.

Keynote – Karl-Heinz Land: Digital Darwinism: The Silent Attack on your Business Model and Brand

Good and provocative but unfortunately in my opinion also with some mistakes. The law of moore does not apply anymore, and as this was his main explanation, why all will be automated in the near future. Yes automation will happen, but only where a real business case is. If you see that over 50% of internet traffic is eaten by video streaming already, than I think this will hamper this process. Blockchain is not an oprating system, it is an distributed secure database. But it comes with cost, which actually is not paid, for example: A Bitcoin transaction consumes more electricity than a one-person household per month. And the verification of security need to many time. This has to be solved or Blockchain will only be used productive in edge case. Generally  I’m more a fan of WildDueck.

ADF Community Meeting

Unfortunately this was greatest disappointment of the whole DOAG conference for me. Once again we discussed several things

  • ADF is not visible from Oracle because not actually marketed
  • Errors in JDeveloper: the IDE for ADF and lack of support for this
  • Provide an Virtual Machine for ADF development. This is ok for trying out, but will not supported in restricted environment at customers as at my company – a bank. At least this should not be an replacement of support for JDeveloper
  • Should we open the community to other technologies like SOA, JET, ABCS an so on. My opinion: definitely no, as this is the final dead of ADF in the community.
  • We see that some of the important product managers move to JET and does not support us anymore.

In this atmosphere this year no common dinner happens after the meeting.

After that I spent the time with some colleagues at the evening party. This year I see early clearing the rooms of the NCC. I don’t know if the starting Scope alliance party was the cause, but maybe they will do this next year on the first day instead?

Day 3

Hans Eichenberger: DBaaS with APEX 5.1 Frontend and Oracle Multitenant Option 

Will repeat my tweet here: The developer dreams come true – getting an inhouse sandbox database in minutes from the DBA! Whoops – unfortunately not my company!

Adam Lukaszewski: Boost your Forms Development with GIT and Forms API Master

At the moment I define a future proof build and deployment process at my company for the loan platform. Part of this is security and mandatory review. So the presented Forms API Master tool is the perfect tool for handling the review and merge process of branches for our legacy Forms and Reports development. Will look how to implement this in Atlassian BitBucket.

Keynote – Robert Schröder: The Difference between Errors and Failures – Experiences in Aviation 

Key message are for me: Accept that failures happen, learn from failures and change your processes accordingly. Define a clear language for your business.

Marcus Hammer: Die Hürden großer ADF-Anwendungen

Not really new for us, but as we speak a lot with other colleagues from his company the solutions are mostly known for us – and for the whole ADF community in Germany. Interesting is the decision to implement batch processing in Java too, seems that it is problematic to get PL/SQL staff right now. I’m not understanding the decision to write an own framework for database deployment, but as this was not his own topic, he could not answer why Liquibase or Flyway does not fulfill their requirements.

Frank Munz: WebLogic 12c and Java Cloud Service

I missed Franks sessions last years, but often look at his slides in the web. This was a very good entry in differentiating the different Oracle Cloud Servives, which I could use for Java Develoment. Oracle Java Cloud Service is only one of it and should correctly named Oracle WebLogic Cloud Service. Great another naming dropping: Application Container Cloud should better by named as Language as a Service. Look at the slides to get the whole picture.

Alex Nuijten: Regular Expressions: Say What?

The best example that you can learn ever something new from a good presenter, despite you think you know all about a topic and you have already read the presentation before. For an example: a regular expression looks already for the longest possible match, which could be the whole string instead of the searched pattern. Interesting too the connect by regexp_count for splitting a string into rows. And look at the standard patterns in dbms_redact before you write your own, if it is not there write it in your own package for reuse.

Frank MunzMicroservices Runtimes

The second presentation of Frank I attend compares the actual available Runtimes on the market. But special interesting was the intro into micro services: are you sure you need this and do you know, what nobody tells you about latency and so on? Or do you know that accessing another micro service can need 100000 times more than accessing a functionality in the same monolith?

Conclusion

Again this year I attend colorful bouquet of presentations and again it pay’s off to look at the whole conference program and some abstracts and presentations before to minimize disappointments.

Generally I attend to few development sessions, maybe because I use other technologies or know already the presented topic.  But my feeling is that are really fewer development presentations.

Interesting is that finally many Development, Deployment, QA, TDD and CI/CD technologies used in other development languages find it’s way into classic Oracle development technologies like Oracle PL/SQL, Forms and Reports.

For the event organization I see a little degradation of service this year, for example the quality of the food or the cleaning of toilets and rooms. And a no go: Missing water for presenters in some rooms!

That’s it!

, , , , , , , , , , , , , , , , , , , , , , , , , , ,

Leave a comment

#DEVCAMP17 wrap up

 

Yesterday I attend the annual barcamp DEVCAMP of the DOAG development community. There are mostly developers with SQL, PL/SQL, Forms & Reports, ADF, JET background and some Java, Javascript and APEX developers too. And not to forget: 1 dba and some managers. Here are my summary.

I arrived on evening before just in time for the life cooking event and later at the bar to meet lot of the people I already know and some new too.

The morning begins with a short introduction to the format of a barcamp.

As warm up Jens Schauder starts with an talk about clean code. He begins to compare what the lack of hygiene for Middle Ages mean and the statement that we are in the IT Middle ages. In extreme cases not tested and not understandable software can kills people! So the task for every day is “write an test” and refactor the code to clean code.

Then the barcamp planning starts. In short time three slots are filled up and the really barcamp starts.

img_20170208_105240

Influenced by the starting talk next there was a session related to clean code and how to implement the related processes. You should teach a little bit of the theory behind it. It is essential to decide all rules with the whole team and review the continuous use of it. If the rules are not followed, then first you should ask why this happens and listen for the reasons. Jens Schauder recommends here these books. Maybe you have to adjust the rules to convince all developers. But in extreme cases of deny any of the decided rules you should escalate and delegate this to the responsible manager.

Next session was about how to test heterogeneous applications, especially SQL, PL/SQL and Forms but others too. I mentioned here two possible strategies, which both has it’s tradeoffs:

I noticed here that testing is mainly seen as to check the contract between developer and customer, sometimes useful for regression test but seldom as required for changing or refactoring the code. The participants seems to be overwhelmed by the amount of tools and effort to do automatic testing. Yes – there is a lot to do in advance, which pays off later.

In the next break I get a shortcut for actual requirement for forms change to implement some kind of SSO without additional servers. I get some nice hints and have now to check, if one of this is successful. This are the advantages of networking here.

The we discussed about Alternatives to Oracle Reports. Seems that it depends on your requirements, which tool to choose. Please do an value analysis here. So if you need pixel exact layout or want not pay much money Oracle Business Intelligence Publisher will not your friend. If you search for an active community maybe you should not choose Eclipse BIRT or at least use the commercial version from Actuate. But both of these and Jasper Reports are used from present participants. Further alternatives seem to be SAP Chrystal Reports and Pentaho. And don’t forget to test exotic features like widows and orphans!

After a coffee break we discussed the future of Oracle ADF. The punchline here was: ADF is not dead, but JDeveloper is very buggy. None of the participants does really miss any bit feature, but most struggles with the IDE. It seems, that the problems are bigger, when you work on windows. Maybe some of the product managers should be forced to worked again with windows to see our problems. I have articulated there 2 problems with the ADF community. I we try to raise the acceptance we should not try to extend the focus of the activities to alternative technologies as MAF or JET. Second we should not self call ADF into question on every conference, we should leave this part to the fans of other technologies.

The last session again turns around automatic testing of PL/SQL, some repeating to the described session above.

In closing session most of the participants said, that they want to come back next year. Maybe it is better to put some fixed sessions or workshops, as this is easier to describe to the bosses as “I will go this event, but it is not clear, what will happens there.”

Conclusion

I have learned not so much new things this year, but I attend these time more the known to me technologies. But I get the confirmation, that most of the things we do or plan do to are on the right track.

Unfortunately I observed some people in the sessions, which comes only to search for finding confirmations to reject for itself, what at least the initiator of the topic want to do.

You find more informations in Twitter

That’s it!

, , , , , , , , , ,

Leave a comment

#DOAG2016 wrap up

doag_wegweiser

Another DOAG is over and here are my summary.

Day 1

Unfortunately the early train from duesseldorf arrives not before 9:30, so I missed the first morning slot. But on the other hand I this was the slot where I had to decide between 8 presentations, which I’m interested in.

The first soft skill presentation was about creative techniques beyond brain storming. The mentioned 3 techniques was all unknown for me, maybe I give it a try next time.

The next presentation promises a live demo of a forms 12c migration to production. Nothing really new here and remembers me for an “beautify our village” contest. But fairly enough for customers which absolutely want to remain on Oracle Forms. As Translation Hub 12c is not available and Oracle Reports 12c will be the last version, I think 11g will the last version we will use on our side before completing migration to ADF.

I attend two presentations, which shows Auraplayer on top of Oracle Forms to provide mobile applications via Oracle Mobile Cloud Service (MCS). I understand the MCS thing, although I find it very complicated to use. But put another layer on complicated and most slowly Oracle Forms to create web services for mobile applications seems no use case for me. I doubt that the recording of web services works really well for complicated forms which switch the displayed items and canvases depending on the selected data. All samples was very simple forms, but the response time of the resulting mobile app was not acceptable for me.

The presentation about continuous integration in APEX give me some new ideas for maybe replacing our actual deployment processes for PL/SQL in the future. Will have a look at the mentioned sql-maven-plugin, when we go for Maven for ADF too. Will check Rspec as BDD framework to run PL/SQL unit tests. Promising is the feature to tie together Selenium tests and data checks in the same Rspec test definition. One drop of bitterness remains, as the presenter had no idea how to solve a merge conflict. Seems that this was only a proof of concept and not really used daily there.

Best practices for PL/SQL performance was a good reminder, what I all know about this topic but use to seldom. But will use some of the configuration things like native compilation of the system packages or PL/SQL optimization level in my docker instances for automatic testing to optimize test times.

SQL tips and tricks was a sovereign presentation, but shows me again that for several Oracle database releases only little improvements for the developer comes with.

Day 2

In session “Standing at a Crossroads, ADF and JET” Duncan Mills clearly show the differences between Oracle ADF and Oracle JET. Running gag: The “Schnecke Chart” for quick decision between both. Will look, if I can reuse this for other decisions.

Next I tried an meeting at the Unconference about continuous integration for PL/SQL. But the most discussions really goes about the automation part. Most participants missed the most importantly definition of continuous integration: ” … continuous integration (CI) is the practice of merging all developer working copies to a shared mainline several times a day.”. Unfortunately I realize now that in the German Wikipedia translation this basis is completely softened: “developer should integrate as often as possible”. Not really new for me here, hope I have told something useful to the others.

“Extending Oracle ADF BC Models to REST, Cloud and Mobile” was a good time to remember what’s now possible as it really available and we now try another migration away from ADF 11g to the hottest version. I have seen this in the last conferences already.

Have read “Deep Dive Into Oracle ADF Transactions: Advanced Techniques” in the web already, but the information was a little bit clearer after seeing Eugene Fedorenko live.

Something completely different: “Free Load Testing Tools for Oracle Database”. I had known Swingbench before. SLOB is completely new for me and did not seen Apache JMeter JDBC test in this context before. Will test the last maybe in the future.

“Top 10 stumble stones for ADF 12c” was very technical but cool, good to have Markus Klenke at our site while our coming migration next weeks.

“Faster, Better, Cheaper: Oracle ADF Development in the Cloud” – with lot of problems in the demo part. Maybe really because of the DOAG WiFi. Quick Tip for all presenters: as I know at DOAG conferences there is ever an laptop available with LAN, try to put it in your laptop! For the content: DCS seems to restricting to much. I prefer Jenkins over Hudson. No push option directly with commit i JDeveloper etc.

Masking test data is very relevant in our banking busines, so I attend “Oracle Data Redaction live in Telko”. Seems that there are many fall knits here, as this doesn’t seem to solve all requirements out of the box.

Before the evening keynote Günter Stürner and Jürgen Menge was awarded, congratulations to both.

Following keynote “Hacking for managers” was very entertaining, if you are German then you should look on youtube for the presenter.

Now we are not ready for the evening party, we start the yearly German ADF Community meeting. Interesting part was a presentation of the Tools Statement of Direction, which again clearly differentiate between ADF, MAF, JET, MAX and ABCS. We get the clear statement ADF is standard for SAAS and JET for PAAS development at Oracle. In my opinion Oracle miss to communicate this in other presentations and miss to further present ADF in the public. A lot of questions of the present Community members was answered here too. Later we eat together with some of the product managers and community members and discussed topics for future presentations.

Later I go back to my hotel to remotely patch our fresh ADF 12.2.1.2 Server with patch for critical escalated bug to start our planned migration for ADF 11.1.1.5 next week. More later in a separate post.

Day 3

In “Indiana Nimphius und der JavaScript Tempel des Todes” Frank shows us his view on the JavaScript Universum, maybe we can really not avoid this in the future on some business cases. But for the next time we will stay on strongly supported ADF and will reduce JavaScript usage there to the minimum.

Thank god the roll-out of SQL Developer 4.1.5 is not started already in our company. Will look how fast I can add the free PLSQL/COP SQL Developer Plugin of Philip Salvisberg from Trivadis to the silent install process. He showed in “Fighting Bad PL/SQL” the theory and the practice how his static code analysis tool for PL/SQL does work. Depending on the outcome and the price maybe we will later implement in continuous integration.

The keynote “Big Picture of digital revolution” wakes the expectation to us to take responsibility for the effects of digital revolution to the society and makes me very thoughtful.

After our hopefully successful migration to ADF 12.2.1.2 I want to change our deployment from ANT to Maven, so I attend the presentation “Migration Maven Possibilities”. This gives a good reminder what to do at that point.

Very interesting presentation, which really does not deserves so few visitors, was “Home Lab Setup and Familiarization of E-Business R12.2”. My time with E-Business Suite is over 15 years away, so I was surprised that I recognized much of the components. I think I’m sure not to install E-Business Suite for the moment, but lot of the instructions for the Home Lab Setup could I reuse for other technologies. Some concepts for the E-Business Suite, eg. double filesystem for reducing offline time for patching, are very interesting.

With last 2 presentations I enter again the world of ThickDatabase paradigm. We ever know that executing business in the database seems faster as in the middle tier, but we had no proofs. Now Toon Koppelaars from Oracle itself give us this with a deep analysis. The question remains – will the other Oracle departments will learn from this?

day 4

Tomorrow I will be trained in Continuous Delivery with Oracle Fusion Middleware and Oracle Cloud. I will release another blogs, when implementing some findings from this training.

conclusion

As you see I switch often between technologies. This happens not ever voluntary. Normally I interested more in the development like ADF, MAF and JET. This year these presentation are unfortunately distributed over the conference. So I have discussed this today with the DOAG executives, they will improve this next year.

Nevertheless I get a lot of ideas from presentations in technologies I do not or not regularly use, so sometime I intentionally choose from such interesting presentations.

A recommendation for all conference visitors. Read the abstracts before you go to a conference and maybe before you book! You avoid disappointments because of wrong expectations. Often the title has the only purpose to be accept the presentation and has little to do with the real content. Abstracts give you often a better idea about the content.

That’s it!

, , , , , , , , , , , , , , , ,

1 Comment

Set all WebLogic log levels to “Inherit” via WLST

Logging is a very useful feature of WebLogic.

Unfortunately the log levels, which are set after a clean install of WebLogic or some of the Fusion Middleware product creates a lot of noise and therefore it costs I/O performance.

Additional after analyzing an issue with logging often resetting the log level is forgotten.

Here you get a script to reset the log levels at regular intervals or after a trace session.

#!/usr/bin/python
execfile('get_environment.py')
connect(wlUser, wlPassword, wlAdminUrl)
edit()
loggers = listLoggers(target=managedServer, runtime=0)
for key, value in loggers.items():
  if key <> "" and key <> "ADF_PERFORMANCE_MONITOR_DATABASE" and value <> "":
    print "set " + key + " from " + value + " to <Inherited>"
    setLogLevel(target=managedServer, runtime=0, logger=key, level="")
loggers = listLoggers(target=managedServer, runtime=0)
exit()

In line 2 a script is called to initialize your environment variables wlUser, wlPassword, wlAdminUrl and managedServer.
In line 5 you get the list of loggers.
In line 6..9 you iterate over this list.
In line 7 you can add your own restrictions. Here are already filtered all inherited loggers and one special tool logger for performance monitoring of ADF applications.
In line 10 the loggers are shown again for the result, you can remove this.

Now call this script via

$ORACLE_HOME/oracle_common/common/bin/wlst.sh config_loglevel.py

In the output you see similar output:

------------------------------------------------------------------------+-----------------
Logger                                                                  | Level
------------------------------------------------------------------------+-----------------
...
oracle.ods.virtualization.accesslog                                     | ERROR:1
...
set oracle.ods.virtualization.accesslog from ERROR:1 to <Inherited>

------------------------------------------------------------------------+-----------------
Logger                                                                  | Level
------------------------------------------------------------------------+-----------------
...
oracle.ods.virtualization.accesslog                                     | <Inherited>
...

This version of the script change only the persistent logger levels (runtime=0), because we don’t want influence running trace sessions. But as our servers are dayly started, all runtime log levels are resetted at this point to the persistent one’s.

That’s it.

References:

, , , , ,

Leave a comment

#Javaland 2016 conference day 2

 

This was my second day:

Michael Tamm (optivo GmbH): Feature Toggles on Steroids

Very good summary off all topic’s covering feature toggles. Wish I had this summary 2 years before, were we have evaluated this. Unfortunately furthermore no solutions for declarative frameworks like Oracle ADF with it’s wizards and xml configurations, which later generated code. Ironic answer to my question: “Don’t use frameworks – use Java”

Alexander Casall (Saxonia Systems AG): User Experience for techies

Now comes someting completely different. As least I had expected. No techniques etc.. There are really german standards “Ergonomics of human-system interaction” in ISO 9241 – 110 (Dialogue principles) and ISO 9241 – 210 (Ergonomics of human-system interaction). I have to read this, if it really would help in development, or the presenter interprets this on its own. Nice and surprising presentation.

Adam Gowdiak (Security Explorations): Java (in)security (Keynote)

The presenter is really angry about Oracle and co. and the security in Java. Nevertheless it seems he has specialized only on this topic and earn this money on this. So I doesn’t know, if somebody or another product is better. What about security in OpenJDK? And what are now my alternatives? A little depressing keynote.

Lars Röwekamp (open knowledge GmbH): Courage to professionalism

I don’t know, what I had expected here, but this was a nice surprise too. The talk was about to find a common language between customer, analyst, developer and other roles. The patterns “Rich Entities” and “Value Objects” helps to find a way out of the helper, util and manager class hell and seems to improve the readability of the code for all stakeholders. But how will this fit in declarative Frameworks like Oracle ADF and it’s generated classes? Have to think about it. Very good speaker!

Wolfgang Weigend (Oracle Deutschland): Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts

Unfortunately the worst presentation comes from Oracle itself. To be fair: this presentation should be held by Bruno Borges, which was prevented to come to Javaland. Tip: Never hold a presentation, which is created by another person, if you don’t know, what he know about the subject. But I’m not sure if I had understood more, if Bruno had held the presentation. I didn’t find a red thread in the slides. And I must add, I didn’t really find an alternative presentation in this time slot.

Alexander Heusingfeld, Tammo van Lessen (innoQ Deutschland GmbH): When Microservices Meet Real-World Projects: Lessons Learned

Interesting presentation but the topic was missed. This had little to do with Microservice, more what a consultant or any person has to learn on his way from Junior to Senior: communicate, communicate, communicate. Especially when you want to change something.

Stephan Kaps (Bundesversicherungsamt): Flyway vs. LiquiBase – Battle of the database migration tools

I wanted to do this comparison several times before, but had never enough time. Now I’m relative sure that I will start with Liquibase in my next private project before I develop the application. This was the subjective winner of the battle too. I’m overwhelmed by the mass of features of both tools. Very good summary!

Architecture Kata

This was a nice workshop to plan the application and technical architecture of a given small set of requirements. Result for me: the many participants from a lot of other companies comes to very similar architecture depending on the assumption they made. In real life you have to communicate again and again with your stakeholders to get answered all of the questions and get quick feedback from them. I have urgently to refresh my knowledge of tools for UML diagramming and graphical presentations. And for structured proceeding maybe I should look for TOGAF training?

Conclusion

This was inspiring conference, which gives me a lot of fresh ideas and reminders for some spilled goals for my private and company projects. I think we’ll see us next year!

That’s it!

, , , , , , , , , , , , , , , ,

Leave a comment

#Javaland 2016 conference day 1

This year I have decided to give the Javaland conference a try. I’m not a java professional, but in the program was listed a lot of interesting testing presentations, so my company booked for me.

The location in Phantasierend Brühl near cologne was very fine. Unfortunately the conference rooms had not enough space this year so for some presentation you have to go to 2 rooms outside of the parc. Additionally it is not understandable, why there is not wlan for such a conference.

This was my first day:

Jeremias Rößler (ReTest): Behavioral Diff as new test paradigm

Why I don’t record a test with all information of my page objects, eliminate all variable parts until it is stable and reproducible and define this a my basic truth. If a code change break this test I check the problems, if these were expected or not. Good idea but – how many data created this and how long does it take to compare all this with previous successful run. I hope this new startup will give us effective tools for this paradigm.

Simon Maple (ZeroTurnaround): Is Your Profiler Speaking the Same Language as You?

When I can trust the Profiler, what are the basics of it and how can I ensure that the right data are available for it. Which traps exist, when instrumenting for tracing and logging. Nice insights, but I’m sure I have to reread the presentation to fully understand.

Exhibition Hall after lunch

Played around with a Jenkins docker instance and the new Pipeline Plugin (formerly named Workflow Plugin) at the Cloudbees booth. I had a nice short talk with Bernhard Cygan about some other Jenkins topics.

Tobias Kraft, Ralf Müller (exensio GmbH): Spock and Geb: Clear and comprehensible tests

This is an interesting combination of frameworks for human readable behavior tests. I’m not sure if it is really enterprise ready (do you use version 0.x?). Will this work with Oracle ADF development too? Have to check this as next opportunity.

Sven Ruppert (Macros Reply): Practical mutation testing

This seems to be the long searched key to find the right tests on the corner cases of our applications. I have mandatory to prove the mentioned PIT framework Very charismatic and tough presenter.

Roel Spilker (TOPdesk), Reinier Zwitserloot (medipc.nl): Lombok: The Boilerplate Buster. It’s a Kind of Magic!

Is this the way to hide generated and framework required code, like standard getters and setters, from the really interesting code, which implements my requirements? It is implemented as a java compiler plugin. Have to check immediately, if this will work with Oracle JDeveloper too. In Eclipse the structure shows the code of generated class, which contains the generated boilerplates via the lombok framework annotations. And what changes are required to fulfill now my static code analysis rules which work on the source code. Additional this was a very entertaining presentation.

Bert Jan Schrijver (JPoint): Continuous Performance: Automated Load Testing with Gatling

As our PoC of JMeter was not really satisfying especially for maintenance of test cases and the load testing should not cost anything at least at the moment, we should definitely this opensource tool a try. Especially the combination of the recorder and the presenter converter scripts to java looks promising. Maybe we could reuse the page object locators from our Selenium tests?

Hubert Klein Ikkink (JDriven): Writing Documentation with Asciidoctor Is Awesome

Focus on content instead of formatting in your documentation! With this tool it seem to be possible to really versioning and therefore to diff your documentation between commits. And still you can generate via templates modern output formats e.g. like HTML 5 or PDF. With a clever combination of features you can annotate your code with markers, to reuse this actual code between this markers in your documentation. And via ASCII art you can generate simple diagrams too. I will absolutely try this on my private projects soon.

Community Hall – Meet the libs

The motto was: show me your favorite opensource lib and I show your mine:

Sven Ruppert again – Proxybuilder: Change the behavior of deep code for different purposes of CDI eg. Metrics, Logging or testing. Maybe interesting for my future tests.
Roland Huß – Jolokia: JMX Bean access via JSON over HTTP, interesting but don’t know if I ever need this
? – Asciidoctor again: Jump additional over some of tool integrations
? – Keycloak: If I ever need a SSO or IDM solution for my private projects this will the first citizen in my tool chain.
? – Wildfly swarm: Interesting but actually I did not touch JBoss or Wildfly in my projects.

Dinner

Generally very good food, I had not expected this here. At dinner I meet at my desk with some staff of canoo, which set up the voting machines at Javaland too. Nice and diverting talk, thank you guys!

That’s it!

, , , , , , , , , , , , ,

Leave a comment

“Bob the Builder: Build/Deploy of #ADF enterprise applications” – I’m a speaker at #DOAG2015:

csm_2015-Konferenz-Ausstellung-Logo_02_373181671d

Today my presentation is confirmed:  “Bob the Builder: Build/Deploy of ADF enterprise applications”.

I will speak over our experiences with following

  • build tools
  • deployment tools
  • architecture
  • versioning & branching
  • continuous integration
  • hot deployment in development
  • compile & runtime dependencies

If you speak german and you are interested in some of this, you should come and attend DOAG 2015.

, , , , , , , , , ,

Leave a comment

ADF Archtitecture Practice – JDeveloper Silent Install of Extensions

This article describes how to standardize your JDeveloper Installation as requested in Planning & Getting Started – Team, Skills and Development Environments. It is part of the ADF Architecture Practice lessons and describes the installation with examples for windows.


Version 12.1.x

There is a tool ojwebupdate to handle this. It is fully supported but it’s not documented at the moment, documentation is planned for 12.1.4. But you can get a lot of info, if you call:

ojwebupdate /?

The easiest thing is to download your reqired extension from the update centers. The update centers can be updated too, so the best thing is to call “Check for updates” in a manual installation and then look in your JDveloper system directory for a file updatecenters.xml.

Eg. if you want to install the extension “JUnit Integration” for version 12.1.3 in Windows 7 you have to go to the url, which is listed under “Official Oracle Extensions and Updates” by default in file

C:\Users\[Your User]\AppData\Roaming\JDeveloper\system12.1.3.0.41.140521.1008\o.ide\updatecenters.xml

At the moment this is http://www.oracle.com/webfolder/technetwork/jdeveloper/downloads/1213center.xml. Open this link, follow the link to “JUnit Integration” and download the required version. The right version can be determined by checking the requirement against your JDeveloper version or other extensions, you can find this information in the Help – About dialog. Or easier – you look at version, which version the manual installation would be installed and download this.

Then you can call installation with following batch file:

set oracle_home=C:\Oracle\JDev121300
%oracle_home%\jdeveloper\jdev\bin\ojwebupdate -zips=[Path]\junit.zip

Extensions can be depending on another extension, you see this in the requirements section of theurl or when you try to install a single extension in a fresh manual installation. In this case you have to install the extensions in the right order.


 

Version 11.1.1.x
The downloading of the file is similar to above, for version 11.1.1.7 you should download “JUnit Integration” extension at the moment from http://www.oracle.com/ocom/groups/public/@otn/documents/webcontent/131167.xml.

You can simply unzip the extensions into your installation. The target depends from the extension itself. Therefore open the zip file and look into the META-INF\bundle.xml file. If there is a tag , then this is the target. If this tag does not exist, the default target is %oracle_home%\jdeveloper\jdev\extensions.

The following batch will install “JUnit Integration” and “JUnit Integration for JDBC” extensions in the right order (as the second requires the first) in JDeveloper 11.1.1.7.:

set oracle_home=C:\Oracle\JDev111170
unzip -o -q junit_bundle -d %oracle_home%\jdeveloper
unzip -o -q junit-j2ee_bundle.zip -d %oracle_home%\jdeveloper\jdev\extensions
rem housekeeping
rmdir /S /Q %oracle_home%\jdeveloper\META-INF
rmdir /S /Q %oracle_home%\jdeveloper\jdev\extensions\META-INF

That’s it!

, , , , , ,

Leave a comment

ADF Archtitecture Practice – JDeveloper Silent Patch

This article describes how to standardize your JDeveloper Patching as requested in Planning & Getting Started – Team, Skills and Development Environments. It is part of the ADF Architecture Practice lessons and describes the patching with examples for windows.


Version 12.1.x

In this version  the Oracle OPatch is delivered with the silent installation of JDeveloper.

All what you need is the patch file for your platform (e.g. p19591087_121300_Generic.zip for JDEVADF SECURITY PATCH UPDATE 12.1.3.0.0 CPUOCT2014). Unzip this patch file.

Then you call batch file similar to:

set oracle_home=C:\Oracle\JDev121300
pushd [path]\19591087
%oracle_home%\OPatch\opatch apply -silent

Revert the patch is similar, the response should look like

set oracle_home=C:\Oracle\JDev121300
pushd [path]\19591087
%oracle_home%\OPatch\opatch rollback -id 19591087 -silent

In Line 3 you have to enter the patch number, which has to be reverted after -id.


Version 11.1.1.x
In some of this versions Oracle OPatch is not delivered with the silent installation of JDeveloper. Please check if %oracle_home%\oracle_common\OPatch does exist. If not – you can download the latest version of OPatch here. Please select your Platform and Release 11.1.0.0.0  as this correspond to your JDeveloper version. Unzip the downloaded file.

In some versions (at least till 11.1.1.1.5) you need for the first patch a default product.xml file in the right place, as this cannot be created silently. Change the highlighted lines according to your environment:

<?xml version="1.0" encoding="WINDOWS-1252"?>
<product>
	<name value="SA_JDEV"/>
	<version value="11.1.1.5.0"/>
</product>

For older versions of opatch maybe you have to add a response file for opatch, which you can create as described here.

Then you need the patch file for your platform (e.g. p19591065_111170_Generic.zip for JDEVADF SECURITY PATCH UPDATE 11.1.1.7.0 CPUOCT2014). Unzip this patch file.

Then you call batch file similar to:

set oracle_home=C:\Oracle\JDev111170
set java_home=%oracle_home%\jdk160_24
rem opatch_home=[your unzipped OPatch home]
set opatch_home=%oracle_home%\oracle_common\OPatch
rem workaround for BUG 9613778: OPATCH-STAND-ALONE: ERROR "OUI-67124:INVENTORY CHECK FAILED" ON GERMAN WINDOWS
rem set _JAVA_OPTIONS="-Duser.language=en"
rem workaround for silent creation of product.xml till at least version 11.1.1.5
rem if not exist %oracle_home%\product.xml copy product.xml %oracle_home%\product.xml /V /Y
rem if not exist %mw_home%\jdeveloper\product.xml copy product.xml %mw_home%\jdeveloper\product.xml /V /Y
pushd [path]\19591087
rem use switch -ocmrf, if you have an older opatch version, which  requires a response file 
rem use switch -jdk, if you have the downloaded opatch version
rem cmd /c %opatch_home%\opatch apply -silent -ocmrf ocm.rsp -jdk %oracle_home%\jdk160_24
%opatch_home%\opatch apply -silent
rem Workaround for BUB 9613778: OPATCH-STAND-ALONE: ERROR "OUI-67124:INVENTORY CHECK FAILED" ON GERMAN WINDOWS
rem set _JAVA_OPTIONS=
Reverting patches is similar to 12.1.x.
set oracle_home=C:\Oracle\JDev111170
set java_home=%oracle_home%\jdk160_24
rem opatch_home=[your unzipped OPatch home]
set opatch_home=%oracle_home%\oracle_common\OPatch
pushd [path]\19591087
rem use switch -ocmrf, if you have an older opatch version, which  requires a response file 
rem use switch -jdk, if you have the downloaded opatch version
rem cmd /c %opatch_home%\opatch rollback -id 19591087 -silent -ocmrf ocm.rsp -jdk %oracle_home%\jdk160_24
%opatch_home%\opatch rollback -id 19591087 -silent

That's it!

, , , , , ,

3 Comments