Simon Roberts

Author
+ Follow
since Oct 24, 2000
Merit badge: grant badges
Biography
I wrote my first program in 1978, on punched cards. I programmed industrial control systems on 8 bit microprocessors for much of the 1980s and early '90s. I shifted to full time teaching in 1994, found Java as a member of Sun Microsystems training division, and today am still teaching Java, along with Scala, JavaScript, Python, and Go.
Motto: "Understanding is greater than knowledge"
For More
Cows and Likes
Cows
Total received
In last 30 days
1
Forums and Threads

Recent posts by Simon Roberts

Greetings Yamal, I hope your day is going well. Thanks for asking about my course--obviously I'm biased -- that said, I'll try to offer something helpful.

I created the very first of these exams when it was all under the control of Sun Microsystems, and worked on many of the updates through Java 8 with Sun, and later as a contractor. More recently, however, Oracle seems to avoid involving any outside input, so it's harder for me to know what's in their minds, or to be sure of everything that's in their question pool.

One of the things that troubles me a bit about the current versions of the exams is that the objectives seem rather vague, which makes it hard to know exactly what might turn up on the exam and what will definitely not. To address this, I make sure to take these exams at least twice, so I get a better feel for the spread of topics. I also pay attention to things folks say about the questions they've seen. I asked one of the Oracle folks about the vague objectives, and their position was that it "makes folks learn more fully". (I think psychometricians and pedgagogists would think that a bit improper, but there it is).

Anyway, based on what I've seen of the question pool, I tried to keep my course focused on things you actually need to know, with a small "overspill" into things that a) are in scope of the very broad objectives and b) if I were an employer I might like to believe job-candidates actually had some understand of. I also try to spend a little extra time explaining the topic areas that folks seem to have difficulties with, or for which the questions asked seemed to be particularly tricky.

I did run through an older Oracle course--if I recall correctly it was the one for the Java 11 exam--and it seemed to address lots of detail that does not seem to show up on the exam. It also seemed more like an enumeration of facts, with less emphasis on explaining and supporting a learner's understanding. Of course, if you are certain of 99% of the material anyway, just running through a refresher might be more efficient than my approach.

So, I guess both courses have their place and address somewhat different audiences.

If you'd like to ask more, please feel free--I think I'm now subscribed to this particular topic, so I would expect to be notified if you do reply. I hope the above is at least somewhat helpful!

Good luck with the exam when you take it!
Cheers,
Simon
Ah, no worries, sorry for being confused. I'm glad to hear you're enjoying the course anyway

As far as I can tell (and it's remarkably confusing, isn't it!) the Oracle course comes as part of a subscription that's $4,999 per year. I couldn't see any option to get the single course.

Unless of course, someone knows different!
I just realized; you posted about the Java 21 exam, but linked to my Java 17 course. I'm working on updates to both my recorded, and live, classes. The latter will appear sooner, but will not be in time for the October edition--all being well, the one following will be Java 21 specific. The timeline on the recorded class is likely longer, however. I'm not sure I should try to guess a date for that yet.
Congratulations, a worthy achievement!
The exam objectives (they call it "topics") noted on the page:
https://education.oracle.com/ouexam-pexam_1z0-830/pexam_1Z0-830
includes text "Assume the following" which sets out to explain the assumptions you should make when answering these exam questions.

I wrote that text some years ago, but the essence is exactly as Mike indicates

Greetings Abdessamad, that's not actually an Oracle course, that's my course. I've been teaching to this exam for a long time now (I wrote the first versions of the exam while I was at Sun Microsystems, who created Java and were subsequently bought by Oracle).

The O'Reilly platform provides access to a huge swath of training materials in a variety of forms including books, videos, and live classes (I teach other things there too, like an introduction to Go programming that I presented yesterday).

A key feature here is that the O'Reilly platform is a subscription model. You pay for a year (or get a brief free trial) and you have unrestricted access to all the materials they host--my course, and the live course that I also teach (see: https://learning.oreilly.com/live-events/java-se-17-developer-1z0-829-crash-course/0636920079000/ which is coming up again at the start of October) are included.

The subscription cost varies somewhat by your location, so you'll have to check that out yourself.

The video course is also available "stand alone" from the InformIT site (part of the Pearson group, who are one of my publishers). You can find it here if that option interests you:

https://www.informit.com/store/java-se-17-developer-1z0-829-video-course-9780138194871

I hope this helps!
Cheers,
Simon

Alexander Zotz wrote:[...] 5 out of the total 50 questions were familiar from my previous attempt.[...]



Well, that's a lot better than only five of 50 being *un*familiar and the other 45 being repeats, which was about the ratio in the Java 17 exam (at least in the early days).

Good info, thank you!

Alexander Zotz wrote:I passed the exam today with 70%. [...]



Question if I may... Did you notice what proportion of the questions you saw on your resit were familiar vs unfamiliar? "Back in the day" Sun used to have multiple entirely distinct exam papers, carefully balanced to ensure that each had the same level of difficulty. So you wouldn't see the same questions until / unless you were on your fourth retake or more. I'm not sure that Oracle is bothering with this, and your observations would be welcome...

Alexander Zotz wrote:I passed the exam today with 70%. [...]


Congratulations! (and if memory serves, the pass mark is 68%, right?)
Yes, much harder than previously, I'm sure. When i worked with Sun on these exams, they ran a beta test to "normalize" the pass mark, so that it would remain at the same level of difficulty (and to remove invalid questions). I don't know for sure that they didn't run a beta, but I strongly suspect they did not, and we're all acting as they guinea pigs for non trivial investments of time and money.
For what it's worth, this is a bit of a corner case. Java 17 rejected this code as pointless, but they relaxed that rule in 21. It's backward compatible, of course, but weird and likely to trip folks up in the exam if they're using 21 but take a 17 exam. But as noted, the release notes enumerate all the changes, though it's sometimes hard to find the ones that are interesting to you!

Cheers,
Simon
I have the same reservations that have been expressed elsewhere about the over-complexity of the questions, and the time constraints that prohibit a thorough reading of them. I really hope they improve this, as I see it as very damaging to the reputation of the exam. I suspect they think they're making it "harder and therefore more valuable", but I think they've just made it a speed-reading (and luck) test as much as anything. Don't get me wrong, you certainly have to know Java inside and out to pass, but you can fail (easily) for irrelevant reasons. I stop short of saying they're "trick" questions, but they're far too "tricky" to really be valid, particularly since so many amount to "if I typed this in an IDE, would it point out a silly syntax error, or would it work?"

That said, I didn't ask about paper and pencil, it was simply on my desk. The topic never came up, and the invigilator didn't ask to see my space, nor indeed anything other than my ID, and my camera appeared to be turned off for most of the exam. Very odd in my view, it didn't feel secure at all.

Anyway, I'm sorry to hear of your experience. Should you decide to retake take a stack of blank paper and a pen or two with you. And, why is is more expensive in Europe than here in the U.S.?

Good luck,
Simon
Many congratulations Sai, the exam is demanding and I firmly believe it's well worth the effort required to gain the credential, particularly for those starting out or transitioning to Java as a new language. The credential itself might not be as valuable to those with a track record as professional Java developers, but everyone learns something new while studying for these exams!

Of course, I also want to take a moment to thank you for mentioning my courses, I'm thrilled you found my work helpful. My motto is "understanding is greater than knowledge", which in part reflects my firm belief that while learning facts can be hard in isolation, it's always easier (and more useful) when one actually understands why a fact is the way it is. I try to make sure that this is reflected in my teaching, though of course with such a huge spread of objectives, I had to spend time judiciously--focusing the deeper explanations on those parts that I have found cause the most trouble, and sticking with relative brevity in the places that are not problematic for most folks.

If anyone is interested, I teach a live class on O'Reilly roughly every two to three months (it'll be updated for the Java 21 exam after the October edition--though I admit I'm not thrilled by what I've seen of the new exam so far; the questions are stupidly complex and there's not enough time to study them thoroughly). The October live course can be found here: https://learning.oreilly.com/live-events/java-se-17-developer-1z0-829-crash-course/0636920079000/ In that course, we focus on key objectives and present lots of quiz questions that you can answer live (and anonymously!) so we can really determine whether we know what we think we know, and where our weak spots might be.

Also, I have a pre-recorded class (I think this is the one you are referring to Sai, yes?) available on demand here: https://learning.oreilly.com/course/java-se-17/9780138194796/

And if anyone is into the older exams (Java 8 or 11), there are on-demand versions of those on O'Reilly too. It's interesting to me that there are still companies that are using only Java 8, and require their folks to get certified in that specific version. The reality is that technology serves business, not the other way round

Again,  many congratulations Sai!
I would say that the language spec is precise and complete, and authoritative on this topic.

I say that largely because it's written by people with a very precise and thorough understanding of the academic meanings of these things across many languages and history, and was written very carefully with the express purpose of being precise and correct. (Sure, they're still human, but.)

Oracle training material, and books, however, are written by much more mortal types of being--and I count myself in that category if I'm being kind to myself! We, in that role, sometimes write with a view to creating a pragmatic understanding, rather than abstruse academic precision (which is commonly much less useful). We're also much more likely to make mistakes.

Finally, I would assert that the language spec explains precisely why an object does have "many forms". If I create a String, it's a String, but it's also a CharSequence, a Serializable, a Comparable (and two more interfaces) and it's also an Object. Because it's all of those things, we can use any of those reference types to refer to it correctly

This is no different from saying that Ishan *is* a human, but is also a University professor, and a Father, and a sports fan.
6 months ago
I would suggest that today it's even more important to avoid using "new" for any type that offers a factory (such as valueOf)

First, but least critical, perhaps, is that calling constructors puts the responsibility for which implementation type to instantiate firmly in the hands of the caller, and it's often better for this decision to be in the hands of the type itself. I offer a fuller explanation of this in a video on my nascent YouTube channel, here: https://www.youtube.com/watch?v=6ZJdVBDWwe4

Second, but potentially much more critical is that project Valhalla (providing Java with "value types") will render some of these constructors non-existent. Note in particular that the constructors for the wrapper types are already deprecated for removal.
6 months ago
In case it's helpful to anyone looking at this later, the simple answer to the original title question "why the need to use reduce?" might reasonably be presented like this:

reduce (in it's various forms, along with collect which is a close relative) allows the creation of a single object as a "final answer" built from all the data in the stream. This is a sufficiently common requirement that a great many "special cases" are provided pre-built, including several, starting with sum(), that were discussed along the course of the thread.

IOW, if you can find a special case solution, use it. If your use case hasn't been coded up for you in a library, build it using reduce, or perhaps collect.

7 months ago