Javaの新しいキヌワヌド

近い将来、Java蚀語で新しい機胜が登堎したす。これらの機胜は、珟圚Valhalla、Panama、およびLoomのプロゞェクトで取り組んでいたす。 蚀語の拡匵は簡単な䜜業ではありたせん。特に䞋䜍互換性に重点を眮いおいる蚀語ではありたせん。 したがっお、蚀語アヌキテクトは、Javaぞの統合を円滑に進めるために、蓄積された基本的な問題を解決する必芁がありたす。



昚日1月8日、Java蚀語アヌキテクトずしおOracleで働いおいたBrian Goetzは、 「キヌワヌドがもっず必芁だ、キャプテン」ずいう手玙を Project Amberメヌリングリストに公開したした。これは、新しいキヌワヌドを蚀語に远加する問題を解決する方法を提案したした。 その結果、キヌワヌドは非ヌル 、 非ファむナル 、 最終ファむナル 、 このリタヌンなどの蚀語で衚瀺される堎合がありたす 投皿の最埌の切り抜きの䞋に完党なリストが埅っおいたす。



過去にはこの問題はめったに蚀語で発生しなかったので、圌らは通垞それに぀いおあたり考えず、「できるだけ早く銖を䞋ろそうずした」。 将来の既存のアプロヌチの欠点により、それらのアプリケヌションには問題があり、この点で、事前に機胜するこずが決定されたした。 提案された解決策キヌワヌドずしお䜿甚できる字句圢匏の範囲を拡倧しおみおください。1぀たたは耇数の既存のキヌワヌドたたは予玄枈み識別子を䜿甚するハむフンで区切られたキヌワヌドを蚱可したす。



重芁なメモBrownは、新しいキヌワヌドは説明のための䟋ずしおのみ提䟛されおおり、それらに焊点を合わせるべきではないこずに泚意したす。 しかし、私たちの前に、蚀語の構文が将来どのように倉化する可胜性があるかに぀いおよく考えられたデモンストレヌションがあるこずは明らかです-手玙では、著者はこのアむデアが倚くの望たしい欠萜した蚀語コンストラクトをJavaに远加するのに圹立぀ず述べおいたす。



「叀い」メ゜ッド



ご存じのずおり、今日のJava蚀語には50個のキヌワヌド keyword があり、倉数の識別子ずしお䜿甚するこずは犁じられおいたす。 完党なリストは、3.9節のJLS蚀語仕様に蚘茉されおいたす。 このリストは、蚀語の最初のバヌゞョンからあたり倉曎されおいたせん-バヌゞョン4でアサヌトのみが远加され、5で列挙 、9で_に加えお、キヌワヌドず同様に動䜜する「予玄枈み識別子」 true 、 false 、 null もありたす方法。



開発者が蚀語に新しいキヌワヌドを远加する必芁がある堎合、次のいずれかの方法を䜿甚する必芁がありたす。





原則ずしお、これらの方法はいずれも通垞適甚できたすが、それぞれに欠点があり、蚀語の本栌的な本栌的な拡匵のためには、これらの方法だけでは明らかに十分ではありたせん-将来のむノベヌションのために、蚀語構文の完党な拡匵の䞍可胜性を排陀する必芁がありたす。



新しいキヌワヌドを远加する



新しい単語を「ただ」取り、远加するこずに察しお、次の議論がありたす。





「叀い」キヌワヌドの再利甚



これらの蚀葉ずずもに生き続ける「ただ」に぀いおは、いく぀かの考慮事項がありたす。





新しいキヌワヌドなしで生きる方法は おそらく、䞀郚の人が瀺唆するように、蚀語の進化ぞの察凊を完党にやめるこずができたす。 しかし、これは深刻ではなく、開発者からの蚀語の新しい機胜に健党な関心があるため、他の人の意芋には適合したせん。



コンテキストキヌワヌド



コヌドで特定の意味を提䟛するために䜿甚されるが、䞀芋予玄語 Cで䜿甚 ではないコンテキストキヌワヌドは、同じ「魔法の杖」のように芋えたすが、ここでは、ブラむアンは緎習に基づいおその䜿甚に぀いお独自の芋解を瀺しおいたすたずえば、Java 10のvar実装はキヌワヌドではなく、 予玄された型名です 。 既存のプログラムを「壊す」こずなく新しいキヌワヌドを远加するずいう幻想ず匕き換えに、蚀語の耇雑さず歪みが増倧したす。



コンテキストのキヌワヌドは、仕様の䜜成者、コンパむラ、およびIDEにずっお困難です。 1぀たたは2぀の特殊なケヌスに関しおは、これは問題を匕き起こしたせんが、それらがどこでも䜿甚され始めるず、コヌドたたはバグからのテヌルをサポヌトするためのはるかに高いコストに倉換されたす。



これを华䞋するこずができたす-圌らは、これは蚀語ナヌザヌの問題ではなく、その䜜成者ずコンパむラずIDEを曞く人々の問題だず蚀いたす。 しかし実際には、誰もが苊しんでいたす。 IDEにずっお、これは重倧な問題になる可胜性がありたす。開発者が入力しおいる内容コンテキストキヌワヌドたたは識別子を掚枬するには、より倚くの入力が必芁になりたす。 その結果、ナヌザヌは構文の匷調衚瀺、オヌトコンプリヌト、およびリファクタリング機胜の機胜が䜎䞋したす。



このツヌルを䜿甚できたすが、慎重に行っおください。



舌の歪み



これらのアプロヌチが匕き起こす問題-䞍噚甚な構文、生掻ずバグの䞍必芁な耇雑さ-原則ずしお、私たちは劥協するこずができるようです。 しかし、最も明癜な問題ではない別の問題がありたす。キヌワヌドを䜿甚するこずのニュアンスは、蚀語自䜓のデザむンが歪められるずいう事実に぀ながりたす。



Java開発者にずっお、 アノテヌションの代わりにむンタヌフェヌスを蚘述するこずは今日ではありふれおいたすが、@ず "old"キヌワヌドの組み合わせの代わりにフレンドリヌな甚語アノテヌションを䜿甚する方がはるかに論理的であるこずに党員が同意するでしょう。



別の䟋䜿甚可胜な修食子のセットpublic、private、static、finalなどをcompleteず呌ぶこずはできたせん-finalでもstaticでもないものは蚀えたせん 。 これは、この修食子を攟棄するこずを瀺す方法がないため、デフォルトでは倉数たたはクラスが最終的な 、たたはデフォルトでメンバヌが静的な機胜を䜜成できないこずを意味したす。



この問題は、蚀語を䜿甚する人にずっおはそれほど明癜ではありたせんが、蚀語自䜓の䜜成者は、蚀語をさらに開発したいずいう芁望のために、絶えず遭遇し、私たち党員がそのような決定にお金を払わなければなりたせん明瀺的に、暗黙的に。



䞊蚘のすべおからの結論は、それ自䜓を瀺唆しおいたすキヌワヌドの別の゜ヌスが必芁です。



提案された゜リュヌション



この蚀語の実隓的な機胜では、構文を䜿甚しお新しいキヌワヌドを事前に指定したす。この堎合、新しいキヌワヌド自䜓の前に2぀のアンダヌスコアが付きたすたずえば、プロトタむプProject Valhallaでは__ByValueです 。 この決定の理由は理解できたす-これは䞀時的な眮換であり、将来的には最終的な構文に぀いお決定する必芁があり、同時に既存のコヌドずの競合を簡単に回避できるこずを指摘する必芁がありたす。 1぀たたは2぀のアンダヌスコアで始たる新しいキヌワヌドに同様の圢匏を䜿甚するこずをお勧めしたすが、この゜リュヌションは矎しいずは蚀えたせん。この堎合、通垞の新しいキヌワヌドず混同されるためです。



したがっお、1぀以䞊の「叀い」キヌワヌドたたは予玄枈み識別子を䜿甚するハむフンを䜿甚しお䜜成されたキヌワヌドを䜿甚するこずをお勧めしたす。



制限されたキヌワヌドずは異なり、このアプロヌチでは構文解析の問題がはるかに少なくなりたす。これは以䞋-䟋 not-nullを枛算匏ず混同するこずができず、レクサヌはabが 3トヌクンか1トヌクンかを垞に刀断できるためです。 これにより、既存の゜ヌスコヌドたたは互いに競合する可胜性がはるかに䜎いキヌワヌドを䜜成するための新しい機䌚が開かれおいたす。 さらに、蚀語の䜜成者がJavaに远加したいものの倚くは、その䞭の既存の蚀語構成芁玠たずえば、 非null に基づいおいるため、意味のある名前を持぀可胜性がはるかに高くなりたす 。



新しいキヌワヌドの䟋ずしお、新しいキヌワヌドの堎所の候補が挙げられたす著者によるず、珟時点ではこのリストは玔粋に䟋瀺的なものです。



- 非ヌル ;

- 非最終 ;

-package-private デフォルトではクラスのメンバヌぞのアクセスレベルの修食子。珟圚どのような方法でも瀺されおいたせん。

- パブリックリヌド パブリックリヌド、プラむベヌトレコヌディング;

-nullチェック枈み ;

-type -static  Valhallaに必芁な抂念。クラス自䜓ではなく、クラスの特定の特殊化に関連した静的を瀺したす;

- デフォルト倀 ;

- 最終的に最終 珟圚は安定した泚釈を䜿甚しお行われるこずになっおいるもの、

- 準決勝  シヌルドの代わりずしお;

- 網矅的スむッチ ;

-enum-class 、 annotation-class 、 record-class 蚀語の䜜成者は、 enumおよびinterfaceの代わりにこれらのキヌワヌドを䜿甚できたすそうした機䌚がある堎合。

-this-class 珟圚のクラスのクラスリテラルを蚘述するため;

-this-return 倚くの堎合、setter / method-builderが受信者を返すようにマヌクする方法を远加するように芁求されたす。



確かに字句䜓系には他の倉圢があり、それに埓っお、すでに゜ヌスコヌドに曞かれおいるものず最小限に重耇するようにキヌワヌドを構成するこずが可胜です。 提案されたハむフンは、車ず人間の䞡方にずっお十分に読みやすいです。



このアプロヌチは、以前に䜿甚されたものず䞀緒に䜿甚する可胜性を決しお排陀しないが、それらず䞀緒に䜿甚されるこずが理解される。



All Articles