Java 11 Hk.

ALcatraz'

Kıdemli Üye
30 May 2013
4,338
4
İstanbul
Selamun aleykum arkadaşlar sizlere elimden geldiğince java 11 ile gelen yeni yenilikleri anlatmaya çalışacağım.

Predicate from java.util.regex.Pattern

Pattern methodları olan Predicate() ve asMatchPredicate() (Java 11'den itibaren) bir Predicate <String> yollar; böylece kullandığımız regexde , örneğin data structures girdileri filtrelemek veya silmek için bir ölçüt olarak kullanılabilir.

Methodlar aşağıdaki gibidir:

Methode Implementierung
Predicate<String> asPredicate() | return s -> matcher(s).find()
Predicate<String> asMatchPredicate() | return s -> matcher(s).matches();


asPredicate() belirli bir bölümü match eder. asMatchPredicate() komple bir stringi.

Kod:
List<String> list = new ArrayList<>( Arrays.asList( "", "69cool", "1898", "Sisi" ) ); 

list.removeIf( Pattern.compile( "\\d+" ).asPredicate().or( String::isEmpty ) ); 

System.out.println( list );            // [Sisi] 

asPredicate()'i asMatchPredicate() ile degistirdigimizde output [69cool, Sisi] olacaktir.
ByteArrayOutputStream

ByteArrayOutputStream, yazı dahili olarak bir byte Array'de saklayan bir OutputStream'dir. Dizinin boyutu yazılı verilere göre dinamik olarak artar.

Kod:
class java.io.ByteArrayOutputStream 
extends OutputStream
ByteArrayOutputStream()
Verileri internal bir byte Array'e eşleyen yeni bir OutputStream objekt'i oluşturur. ByteArrayOutputStream(intsize)
İstenilen başlangıç puffer capasity'ne sahip bir ByteArrayOutputStream üretir.

OutputStream olarak, ByteArrayOutputStream, tümü IOException olan tüm methodları devralır. Bu, belleğe yazan bir akışla olmaz. Bu nedenle, Java 11'de bir IOException atamayan yeni bir yöntem writeBytes(byte []) tanıtıldı. En önemli method, byte[] içeriğini toByteArray() yöntemidir.

Kod:
reset()
dahili arabelleği temizler.

Kullanışlı bir yöntem
Kod:
writeTo(OutputStream out)
.

Onun arkasında görünmez iç alandaki bu bizim için yazan bir

Kod:
out.write(buf, 0, count)
. Byte Array'i bir string'e dönüştüren üç toString(...) yöntemi vardır: toString(String charsetName) ve toString(Charset charset) - Java 10'dan beri - karakter kodlaması argüman olarak iletilir ve ByteArrayOutputStream, toString() öğelerini geçersiz kılar. standart platform karakter kodlamasını alan superclass nesnesi.

Charsequence();

Java 11 ile gelen yeni bir özellikte Charsequence methodundan geliyor.
Compare(..) 2 Charsequence objekti lexicographically olarak karsilastirir.

Kod:
interface java.lang.CharSequence 
 static int compare(CharSequence cs1, CharSequence cs2)
2 stringi lexicographically olarak karsilastirir. Statik yöntem şu anda CharBuffer, Segment, String, StringBuffer, StringBuilder'ın tüm kombinasyonlarının sadece bu tek yöntemle kontrol edilebilmesi avantajına sahiptir. Karşılaştırma 0 verirse, stringlerin aynı karakterleri içerdiğini biliyoruz demektir.

Unicode toString

Unicode karakterini bir string'e dönüştürmek için static overloaded string method olan valueOf(char) kullanabiliriz. Benzer bir yöntem tam tersi için, toString(char) static yönteminde bulunur. Her iki yöntem de Unicode karakterinin yalnızca 2 byte uzunluğunda olması kısıtlaması vardır. String valueOfCodePoint(int) de bildirir. Böyle bir yöntem daha önce karakterde eksikti; Sadece Java 11'de toString(int) eklendi; dahili olarak valueOfCodePoint(int)'de.

String Control

String objektleri, temsil ettikleri karakter dizisini dahili olarak yönetir ve objektin özelliklerini açığa çıkarmak için çeşitli methodlar sağlar. Zaten length() hiç birimize yabancı değil.

String için, stringde ki karakter sayısını döndürmek için uygulanır (stringin uzunluğu). String'in karakter içermediğini öğrenmek için, length() == 0'a ek olarak isEmpty() methodunu kullanabilirsiniz. Java 11'de, String'in boş olup olmadığını veya yalnızca beyaz boşluktan oluşup oluşmadığını kontrol eden method, isBlank() eklendi; Beyaz boşluk, Character.isWhitespace(int) öğesinin doğru görüntülendiği herhangi bir karakterdir.

IslemOutput

„“.length()0„
“.isEmpty() true“
".length() 1“
„.isEmpty() false“
„.isBlank() true
String s = null; s.length();NullPointerException


Repeat of String

Java 11'de bir Objektmethod olan repeat(int count) eklendi, string'in tekrarlanmasını saglar.

Örnek olarak:

Verilen String'i 3 defa tekrarlayınız;

Kod:
String s = „tu“;  

System.out.println( s.repeat( 3 ) );    // tututu
Java 11 ile bu method gelmeden önce, buna yaklaşık kullanımlar su şekilde idi.

Kod:
int n = 3; 

String t = new String( new char[ n ] ).replace( „\0“, s ); 

System.out.println( t );                // tututu

WhiteSpace

Bir kullanıcı girdisinde veya yapılandırma dosyasında genellikle boşluk veya sekme gibi bir metin boşluğun önemli kısmının önünde veya arkasında yer alır. İşleme başlamadan önce çıkarılmalıdır.

String sınıfı trim() ve Java 11 ile gelen, strip(),stripLeading() ve stripTrailing() öğelerinden beri sunar.

Aralarında ki fark:

MethodReplace

trim() String'in başında ve sonunda, tüm kod noktaları uzaydan küçük veya ona eşit, U + 0020 '
strip()Character.isWhitespace(int) tanımlandıktan sonra boşluk olan String'in başında ve sonunda bulunan tüm karakterler

stripLeading() strip() gibi lakin sadece String'in basini alir.

stripTrailing() strip() gibi lakin sadece String'in sonunu alir.


trim() ve stripXXX() arasında ki farklar ;

Dört method'da String'in ortasında ki boşlukları kaldırmaz.

Kod:
String s = “ \t Elime konus lutfen.\n  \t „;
System.out.println( „‚“ + s.trim() + „‚“ ); // ‚Elime konus lutfen.‘
Örnek: Bir String'i hangi çıktıda bütün boşluklar kaldırılır test edin.
Kod:
boolean isBlank = „“.equals( s.trim() );


 Alternatif:


 boolean isBlank = s.trim().isEmpty();
HTTP Client ve WebSocket API

HTTP standardı zaten nispeten eski ve kökenleri 1990'ların başında atılmıştır. Resmi olarak, sürüm 1.0 1996'da kabul edildi, aynı zamanda Java 1.0 yayımlandı. 2015'te HTTP / 2 geçildi ve standartta birçok iyileştirme yapıldı. Ancak, HTTP etrafındaki Java class'ları, Apache HttpComponents ( Apache HttpComponents – Apache HttpComponents) veya Java için Asynchronous Http ve WebSocket Client kitaplığı gibi açık kaynak kitaplıklarını içerecek şekilde güncelleştirilmemiştir (http://github.com/AsyncHttpClient / async http istemcisi boşlukları doldurdu.

Modul.java.net.http

HTTP / 2'nin yeni özellikleriyle HttpURLConnection gibi mevcut HTTP sınıflarını genişletmek yerine, Oracle java.net.http modülünü tanıttı. İlk kez, Java 9'da incubator'da teslim edildi ve Java 11'de kodlandı. Senkronize çağrılara ek olarak, modern bir CompletableFeature sunan asenkron çağrıları da yapabilirsiniz.

java.net.http içinde barındırdığı paketler ;

HttpClient
HttpRequest, HttpResponse
WebSocket

Hemen bir örneğe bakalım ;

Kod:
try {    
    URI uri = new URI( "https://yildiztilbe.com/" );

    HttpRequest request = HttpRequest.newBuilder().uri( uri ).GET().build();

    HttpResponse<String> response = HttpClient.newHttpClient().send( request, BodyHandlers.ofString() );

    System.out.println( response.body() );

}  
catch ( URISyntaxException | IOException | InterruptedException e ) {

    e.printStackTrace();  
}
Bütün HttpRequest Methodları abstract'tır.

Kod:
abstract class java.net.http.HttpRequest
Kod:
Optional<HttpRequest.BodyPublisher> bodyPublisher()

boolean expectContinue()

HttpHeaders headers()

String method()

Builder newBuilder()

Builder newBuilder(URI uri)

Optional<Duration> timeout()

URI uri()

Version version()



HttpClient isteği yürütürse, bir HttpResponse alırız; Aşağıdaki yöntemleri bildirir:

Kod:
public interface java.net.http.HttpResponse<T>
Kod:
T body()

HttpHeaders headers()

Optional<HttpResponse<T>> previousResponse()

HttpRequest request()

Optional<SSLSession> sslSession()

int statusCode()

URI uri()

Version version()

Bir Type için body() yönteminin döndürdüğü method, HttpClient yönteminin (...) iletilen BodyHandler <T> parametresinden kaynaklanan HttpResponse <T> parametrelerini belirler:

Kod:
public abstract class java.net.http.HttpClient
Kod:
static HttpClient newHttpClient()

HttpResponse<T> send(HttpRequest req, HttpResponse.BodyHandler<T> responseBodyHandler)
BodyHandler burada method ile functional interface'dir.

Kod:
BodySubscriber<T> apply​(HttpResponse.ResponseInfo responseInfo)
HttpResponse.BodyHandlers sınıfında önceden tanımlanmış bazı uygulamalar var:

Kod:
public static class java.net.http.HttpResponse.BodyHandlers
Kod:
static HBodyHandler<byte[]> ofByteArray()

staticBodyHandler<Path> ofFile​(Path file)

static HttpRespoBodyHandler<Stream<String>> ofLines()

static HBodyHandler<String> ofString()
Geriye kalan methodlar : Javadoc :)

O kadar yazmışız bir indirme linki verelim;
TIKLA
TIKLA 2


Tabii daha bir çok yeniliği olmasına rağmen şu anlık anlatmak istediklerim bunlardır.
Herhangi bir sürç-ü lisan ettiysek affola . :)
 

xnv

Yeni üye
11 Ağu 2018
10
0
Java kullanan net yıkıktır, direkt machine code yazamayan kendine yazılımcı demesin.
 

xnv

Yeni üye
11 Ağu 2018
10
0
Affet üstad, biz daha portakalda vitamin değiliz o konularda.

Sorun değil krdşm, black olma yeter.

vP3qyA.jpg
 

ihan3t

Kadim Üye
7 Şub 2012
5,018
22
Eline sağlık dostum. Birkaç şeyi düzelteyim.

import java.util.regex.Pattern;

asPredicate since 1.8

Predicate in gösterilen methodları 1.8 den beri var zaten : https://tik.lat/zupDY

ByteArrayOutputStream since jdk 1.0 & 1.1

https://tik.lat/ogaAP

Yanlış hatırlamıyormuşum.

HttpClient gelmesi güzelde oldu saçma sapan abstractionlarla uğraşıyorduk. Gerçi apache commonsta HttpClient vardı zaten ama olsun..

 

ALcatraz'

Kıdemli Üye
30 May 2013
4,338
4
İstanbul
Eline sağlık dostum. Birkaç şeyi düzelteyim.

import java.util.regex.Pattern;

asPredicate since 1.8

Predicate in gösterilen methodları 1.8 den beri var zaten : https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html

ByteArrayOutputStream since jdk 1.0 & 1.1

https://docs.oracle.com/javase/7/docs/api/java/io/ByteArrayOutputStream.html

Yanlış hatırlamıyormuşum.

HttpClient gelmesi güzelde oldu saçma sapan abstractionlarla uğraşıyorduk. Gerçi apache commonsta HttpClient vardı zaten ama olsun..



ByteArrayOutputStream'de tanitilan yeni methoddan bahsettim;

"Java 11'de bir*IOExceptionatamayan yeni bir yöntem*writeBytes(byte [])*tanıtıldı."

asPredicate();

"Predicate<String>" olarak kullanabiliyor, yeni olarak.

Senin tecrüben daha fazla dostum java'da. Eğer zaten önceden de bu methodlar var ise direkt kaldırayım. :)
 

ihan3t

Kadim Üye
7 Şub 2012
5,018
22
ByteArrayOutputStream'de tanitilan yeni methoddan bahsettim;

"Java 11'de bir*IOExceptionatamayan yeni bir yöntem*writeBytes(byte [])*tanıtıldı."

asPredicate();

"Predicate<String>" olarak kullanabiliyor, yeni olarak.

Senin tecrüben daha fazla dostum java'da. Eğer zaten önceden de bu methodlar var ise direkt kaldırayım. :)

Yok yahu tecrübeden değil, kullanmıştım daha önce hatırlıyorum hatta şuraya bak : https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#asPredicate--

Kod:
public Predicate<String> asPredicate()
Creates a predicate which can be used to match a string.

Böyle bir açıklama var. Exception için olan doğrudur bir şey diyemeyeceğim.

Eline sağlık bilgiler için, şuraya da bari ben bir link bırakayım bir hayrım olsun : https://dzone.com/articles/java-11-api-changes-so-far

Bu da tüm javacılara gelsin : https://www.instagram.com/p/Bng6z1Gnggq/?taken-by=furkanemirce
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.