1. 程式人生 > >Gosling Moves to AWS, Project Jigsaw Pieces Coming Together, and Java Language Type Erasure!

Gosling Moves to AWS, Project Jigsaw Pieces Coming Together, and Java Language Type Erasure!


Visit the developerWorks Java Hub

Java Creator James Gosling Hired by Amazon Web Services (He’s Still Got it, Baby!)

Java creator James Gosling announced on May 22nd he was leaving Boeing (formerly Liquid Robotics) for Amazon Web Services. The announcement on Gosling’s Facebook page said he would start that day.

Analyst firm Redmonk,

in this post suggested that AWS is “demolishing the cult of youth” by bringing the 62 year old Gosling aboard.

It’s no secret that IT, which mirrors our larger culture, values youth. According to the article, young people tend to have more energy, work longer hours, and have fewer family committments, allowing them to devote more time and energy to work.

But there is value in experience, prompting XML spec co-author Tim Bray (who is 61) to coin a new tongue-in-cheek acronym: GaaS, or Geezers as a Service.

It’s not clear what Gosling will be doing at AWS. On his LinkedIn page he says he’ll be wandering around.

Redmonk said in their post that Gosling is “…just as likely to be designing a fleet of underwater delivery drones as driving programming language innovation.”

At Liquid Robotics, Gosling worked on autonomous robots like the one shown here on Liquid Robotics YouTube channel.

Gosling posted on Facebook on May 28th a link to the Redmonk article, along with this response, where he said:

“One of the things I really liked about Liquid Robotics was the balance of ages. Amazon Web Services is that way too, which was a huge attraction. It’s weird to now show up as a poster boy for the grey-haired crowd.”

The old saying goes, “There is no substitute for experience”. It would seem that AWS totally gets that.

Project Jigsaw (Java Platform Module System) Coming Together

On May 8th, the Java Community Process Executive Committee voted No on the public review draft of JSR 376, code named project Jigsaw.

The JCP process gives Expert Group for JSR 376 has 30 days from May 8th to update the draft, and resubmit it to the Program Management Office, who then will forward it to the Executive Committee, who then puts it up for a Reconsideration Ballot.

If that ballot fails, then the JSR is closed. And if JSR 376 is done, then the future of Java 9 is unclear. Or at the very least a end-of-July delivery is in doubt, if even possible.

But Expert Group member Tim Ellison of IBM seems optimistic that JSR 376 will pass on the Reconsidertion ballot, and said this in a May 26th blog post following a series of expert group meetings he attended, held on May 18th, 22nd, and 23rd:

“… the Expert Group organized itself quickly around a series of real-time meetings that provided an immediate, productive, and healthy forum for discussion. While our preference is always for an open conversation including the broader community, we understand that sometimes such focus requires a “heads-down” working meeting. This was one of those times, and [the meetings] were very valuable as we were able to reach a much closer consensus… We look forward to seeing this revised specification being re-presented to the JCP EC, and expect the EC to support the Expert Group in their conclusion.”

A major concern in the minds of many, myself included, is the migration path of existing applications to Java 9 that work just fine under Java 8. In particular, frameworks like Spring and Hibernate that use Deep Reflection to do their thing are vulnerable to Java 9’s strict adherence to modularity.

Java spec lead Mark Rheinhold in March announced the introduction of the “Big Kill Switch” to ease the migration path to JDK 9.

The Big Kill Switch is a command line option that permits illegal reflective access from classes on the CLASSPATH. So when you fire up the JVM, you pass the

--permit-illegal-access

flag, and now classes in any unnamed module (i.e., on the CLASSPATH) can use reflection.

Any code that performs illegal reflective access will cause the runtime to issue a warning every time it happens.

“… The strong encapsulation of JDK-internal APIs has, in
particular, triggered many worried expressions of concern that code that works on JDK 8 today will not work on JDK 9 tomorrow… To help the entire ecosystem migrate to the modular Java platform at amore relaxed pace I hereby propose to allow illegal reflective access from code on the class path by default in JDK 9, and to disallow it in a future release.”

If approved, the Big Kill Switch will no longer be required, and if the runtime detects any code from the CLASSPATH performing illegal reflection, it will issue a single warning at some point, and that’s it.

The issues modularity raises in the presence of code that uses reflection is a fairly complicated one, and I found this post at SitePoint to be very helpful in explaining it.

So what does this mean for JSR 376 and Java 9? The productive Expert Group meetings are definitely a good sign. But whether or not allowing illegal reflective access by default will ease concerns of members of the Executive Committee is anybody’s guess.

The 30 day window for the Reconsideration ballot closes on June 7th.

Be sure to tune in to future episodes of Java News and Code for updates on this story.

Code Talk-through: Java Language Type Erasure

Finally, for this episode’s code talkthrough, I’d like to take you on a tour of Java Type Erasure.

Type Erasure is a compiler technique used to make Java Generics work.

The reason Type Erasure works the way it does is for the sake of backward compatibility, which has always been a primary concern of the Java language maintainers.

I’d like to walk through some of the Type Erasure recipe I wrote for IBM developerWorks.

I wrote an application to accompany the recipe, and you can clone the code from GitHub.

In this segment, I’ll show you one very common error and a common warning, both of which you are likely to see if you work with Generics.

Check out the Type Erasure Recipe for more details!

Credits

Music:

Slay Well by Gunnar Olsen, YouTube Audio Library (Free to use for commercial purposes, no attribution required), see YouTube Terms of Service and this YouTube support article for details.

Pixabay images and videos are free for commercial use, no attribution required. See Pixabay Terms of Service for more information..

相關推薦

Gosling Moves to AWS, Project Jigsaw Pieces Coming Together, and Java Language Type Erasure!

Java Creator James Gosling Hired by Amazon Web Services (He’s Still Got it, Baby!) Java creator James Gosling announced on May 22nd he was leaving Boein

AWS Case Study: Holiday Extras Moves Finance Application to AWS

Since moving the finance platform to AWS, Holiday Extras has seen quantifiable improvements in speed, reliability, ease of scalability, and use

maven打包出錯: Failed to clean project: Failed to delete

size failed water 一個 fontsize 由於 maven lean img maven打包出錯: Failed to clean project: Failed to delete 出現這種錯誤,通常是由於您已啟動了另一個to

[LeetCode] Minimum Moves to Equal Array Elements

nbsp incr all log rem 之間 input ner () Given a non-empty integer array of size n, find the minimum number of moves required to make all a

Maven異常_04_Failed to clean project

ons 異常 led 程序 出現 編譯 str ger 紅色 異常:Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project

462. Minimum Moves to Equal Array Elements II

required lec num ger logs turn all nat array Given a non-empty integer array, find the minimum number of moves required to make all array

Qt & VS2013 報錯:There's no Qt version assigned to this project for platform Win32

log 路徑 ont vs2013 ima 版本選擇 配置 pan 了解 如果你想了解關於Qt與VS2013開發環境搭建,可以至此翻頁。 這裏主要分享環境已搭建成功,在構建項目時遇到的報錯解決方案。 【1】Qt 與 VS2013開發環境構建時報錯 報錯界面如下:

LeetCode 453. Minimum Moves to Equal Array Elements

每次 nat 需要 run ats alc inpu 關鍵詞 關鍵點 Given a non-empty integer array of size n, find the minimum number of moves required to make all arr

[LeetCode]Minimum Moves to Equal Array Elements1,2

移動 就是 奇數 多少 leet pan 最小值 arrays 快的 1.將每次n-1個數+1,轉化為每次最大的數-1 public int minMoves(int[] nums) { /* 看了看答案 ,很巧妙,最後的結果肯定是把數組元素

[LeetCode] Minimum Moves to Equal Array Elements II

vector req ati pos number nat tin num find Given a non-empty integer array, find the minimum number of moves required to make all array e

453. Minimum Moves to Equal Array Elements

pan ini span count arr ++ style num tor 每次一定是選擇最小的n-1個數+1。直接做會超時。 換一種思路,對最小的n-1個數+1,等價於對最大的數-1,問題就很簡單了。 class Solution { public:

(Java) LeetCode 453. Minimum Moves to Equal Array Elements —— 最小移動次數使數組元素相等

簡化 put 個數 equal require 就是 lan remember 邏輯 Given a non-empty integer array of size n, find the minimum number of moves required to make a

[Math_Medium]462. Minimum Moves to Equal Array Elements II

member 數值 sort 一個數 element ini 如果 str 順序 原題462. Minimum Moves to Equal Array Elements II 題目大意: 給你一串數字,對於每個數字,一次性可以移動一步(數值增加1或者減小1),請問如何在最

解決 Maven工程執行報錯Failed to clean project: Failed to delete

  在執行maven工程總是報“Failed to clean project: Failed to delete”錯誤,原因是因為之前編譯的工程還在執行,無法clean,導致maven生命週期無法繼續進行。   看到網上很多誤人子弟的方法,什麼關閉java程序,還有說等待一段時間讓他自動好的。這個問題的解

[LeetCode] 462. Minimum Moves to Equal Array Elements II

題:https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/description/ 題目 Given a non-empty integer array, find the minimum num

[LeetCode][453] Minimum Moves to Equal Array Elements題解

對於一個序列: 設序列的和開始為sum0,結束為sum1 序列長度為n 序列的最小值為min 對於一個最小值min,每次加法操作都必然作用在min上 共作用k次後得到一個數字x 此時所有的數字都是x 那麼有 k =

Leetcode-462 Minimum Moves to Equal Array Elements II(最少移動次數使陣列元素相等 II)

1 class Solution 2 { 3 public: 4 int minMoves2(vector<int>& nums) 5 { 6 sort(nums.begin(),nums.end(

Unable to create project from archetype org apache maven ar

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

462. Minimum Moves to Equal Array Elements II(python+cpp)

題目: Given a non-empty integer array, find the minimum number of moves required to make all array elements equal, where a move is increment

[LeetCode&Python] Problem 453. Minimum Moves to Equal Array Elements

Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incre