Java Günlüğüm
Yazılım, Java, BT, azıcık felsefe, biraz mizah...
  • Udemy Eğitimleri
  • Temiz Kod
  • Tasarım Kalıpları
  • Hakkımda
  • Arşiv
RSS
29 Temmuz 2013

Java EE 7 Tutorial Yayınlandı

Akin Java, Java EE Java EE 7 Tutorial

Java EE 7’nin yayınlanmasıyla birlikte pek tabi olarak tutorialı da yayınlandı. Eskiden bu yana hem Java SE hem de EE tutorialları malum, Internet üzerinden erişilebilir durumda oluyor. Kanımca bu tutoriallar, özellikle kendi kendine, sistemli olarak öğrenme sağladıklarından, en önce okunması gereken kitaplar arasında. Java EE 7 Tutorialı PDF olarak ve HTML olarak indirebilirsiniz. Java Tutorialları için bir blog da var, ona da bakıp, tutoriallar hakkında en son gelişmeleri takip edebilirsiniz.

Java EE 7’yle geliştirilmiş örnek bir uygulama ise, Your First Cup: An Introduction to the Java EE Platform erişilebilir durumda. İçinde GlassFish Open Source Edition 4.0 olan Java EE SDK‘i indirmişseniz, bu uygulamayı üzerine kurup çalıştırabilirsiniz. Yukarıda bahsettiğim hem tutorial hem de örnek uygulamaya da Java EE SDK‘i indirdiğiniz sayfanın en altından ulaşabilirsiniz.

Bol Java EE’li günler dilerim 🙂

 

Toplam görüntülenme sayısı: 1476

12 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
24 Temmuz 2013

Oracle’ın Java EE 5 Sertifikaları: OCP ve OCM

Akin Java Certified Java Programmer, Java certification, Java EE sertifikaları, Oracle Java Certifications, sertifika

Daha önce yayınladığım Java SE Sertifikaları yazısının devamı niteliğinde olan bu yazıda Java EE 5 sertifikalarından bahsedeceğim.

Java EE sertifikaları ve ilgili sınavları da Java SE’deki yeniden yapılandırma sürecinden geçti. Yapılandırma, farklı Java sürümleri için farklı şekillerde sertifikalar da üretti. Dolayısıyla ortaya biraz karışık bir durum çıktı. Söyle ki: Java EE 5 için 3 tane farklı konuda OCP ve bir tane de OCM söz konusu. Bu yazıda bir dörtlü yapıyı açıklayacağım.

Java EE 5’in OCP konuları, aşağıdaki çizimden de görüldüğü gibi, Business Component Developer, Web Component Developer ve Web Services Developer‘dır. Business Component Developer OCP sınavının nosu 1Z0-860‘tir ve 61 çoktan seçmeli soruyu 150 dakikada cevaplamanızı istemektedir, başarı eşiği ise %57 fiyatı ise 426 TL’dir. Web Component Developer OCP sınavının nosu 1Z0-858‘dir ve 69 çoktan seçmeli soruyu 150 dakikada cevaplamanızı istemektedir, başarı eşiği ise %72’dir. Web Services Developer OCP sınavının nosu 1Z0-862‘dir ve 65 çoktan seçmeli soruyu 150 dakikada cevaplamanızı istemektedir, başarı eşiği ise %65’dir. Bu üç OCP için de herhangi bir Java SE OCP Programmer ya da SCJP sertifikasının zorunlu olduğunu ekleyelim. Bu verilerden anlaşıldığı gibi, Business Component Developer OCP sınavı diğerlerinden çok daha zorlu geçmektedir.

 Oracle Java EE Sertifikalari 2

 

Bu üç OCP sınavının kapsamlarına kısaca göz atalım.

Business Component Developer OCP sınavı için ana konu başlıkları şunlardır:

  • EJB 3.0 Overview
  • General EJB 3.0 Enterprise Bean Knowledge
  • EJB 3.0 Session Bean Component Contract & Lifecycle
  • EJB 3.0 Message-Driven Bean Component Contract
  • Java Persistence API Entities
  • Java Persistence Entity Operations
  • Java Persistence Query Language
  • Transactions
  • Exceptions
  • Security Management

Web Component Developer OCP sınavı için ana konu başlıkları şunlardır:

  • The Servlet Technology Model
  • The Structure and Deployment of Web Applications
  • The Web Container Model
  • Session Management
  • Web Application Security
  • The JavaServer Pages (JSP) Technology Model
  • Building JSP Pages Using the Expression Language (EL)
  • Building JSP Pages Using Standard Actions
  • Building JSP Pages Using Tag Libraries
  • Building a Custom Tag Library
  • Java EE Patterns

Web Services Developer OCP sınavı için ana konu başlıkları şunlardır:

  • XML Web Service Standards
  • SOAP 1.2 Web Service Standards
  • Describing and Publishing (WSDL and UDDI)
  • JAX-WS
  • REST, JSON, SOAP and XML Processing APIs (JAXP, JAXB and SAAJ)
  • JAXR
  • J2EE Web Services
  • Security
  • Developing Web Services
  • Web Services Interoperability Technologies
  • General Design and Architecture
  • Endpoint Design and Architecture

İçeriklerden anlaşıldığı gibi Business Component Developer OCP temelde EJB’ler ve JPA üzerine yoğunlaşmıştır, Web Component Developer OCP ise  temelde Servlet, JSP, EL ve tagler üzerine yoğunlaşmış olup JavaServer Faces (JSF) içermemektedir. Web Services Developer OCP ise temel web servis yapılarını içermekte olup RESTFul web servislerini kapsamamaktadır.

Java EE’nin en son olarak geçtiğimiz Mayıs ayında 7. sürümü çıktı. Bu durumda neden bir Javacının Java EE 5’in sertifikalarını almak isteyeceği şeklinde bir soru akla gelebilir. Pek çok nedeni vardır bunun. Orneğin muhtemelen projenizde Java EE ‘nin 5. sürümü kullanılıyordur ya da muhtemelen siz Java SE 5 için OCP olmuşsunuzdur. Fakat sıfırdan sertifika sürecine girecek olanlara Java EE’nin 5. sürümü yerine 6. sürümünü tavsiye ederim.

Burada bahsettiğim bu üç tane OCP’nin muhtemelen bir ya da bir kaçını aldıktan sonra hedefiniz Oracle Certified Master Java EE 5 Enterprise Architect olabilir. OCM olmak için aslında yukarıda bahsedilen OCPlerden herhangi birine sahip olmak zorunda değilsiniz. OCP Programmer sertifikasından sonra OCM olmaya doğru yönelebilirsiniz fakat bu çok da gerçekçi bir davranış olmayacaktır. Cünkü OCM Java EE 5 Enterprise Architect olabilmek çok ciddi Java EE bilgi ve tecrübesi gerektirmektedir. Dolayısıyla makul olan muhtemelen, bir kaç senede bir alınacak yukarıda bahsedilen OCP sınavlarından sonra OCM Java EE 5 Enterprise Architect olmaya yönelmektir. Zaten böyle bir süreçte bir Javacı, OCA ve OCP Programmer sınavlarını da alacağı düşünüldüğünde, neresinden baksanız minimum 3 sertifika alacak ve bu süreçte 6-7 hatta 7-8 senelik bir Java tecrübesine sahip olacaktır.

Simdi biraz da Oracle Certified Master Java EE 5 Enterprise Architect’in gerekliliklerinden bahsedelim. Oncelikle Oracle sizin bu listeden bir eğitim almanızı zorunlu tutuyor. Sonrasında ise IZ0-864 nolu ve, %57 başarı barajına sahip, 120 dakikada 64 çoktan seçmeli soruyu cevaplayacağınız bir sınavı 426 TL ödeyerek alıp geçmeniz beklenmektedir. Bu sınavın konuları ise şunlardır:

  • Application Design Concepts and Principles
  • Common Architectures
  • Integration and Messaging
  • Business Tier Technologies
  • Web Tier Technologies
  • Applicability of Java EE Technology
  • Patterns
  • Security

Bu sınav ile birlikte, alındıktan sonra 6 ay içinde tamamlanması gereken 426 TLlik bir geliştirme ödevi ve aynı maliyette bir makale yazımı vardır. Geliştirme ödevinin nosu 1Z0-865‘dir ve çokta seçmeli sınavdaki konularda kararlar verip gerekli dokümantasyonu UML kullanarak yapmanız beklenmektedir. Geliştirme ödevi sırasında, “separation of concerns”, katmanlı ve katlı mimariler (layered ve tiered-architectures) ve tasarım şablonları gibi prensip ve teknikler, performans, ölçeklenirlik, güvenlik, güvenirlik vb. konulardaki mimari yaklaşımlar ile JDBC ve JPA gibi alternatif teknolojiler arasında yapılan seçimlerin tartışılıp, vermiş olduğunuz kararların güçlü ve zayıf olduğu noktaların belirtilmesini içeren 120 dakikalık 1Z0-866 nolu makale yazımı da OCM Java EE 5 Enterprise Architect olmanın son adımını oluşturmaktadır. Sunu da belirtelim ki bu dört adımın, yani eğitim, sınav, ödev ve makale yazımının herhangi bir sırayla yapılması mümkündür.

Bir sonraki yazıda da Java EE 6’nin sertifikalarına göz atalım.

Bol sertifikalı günler dilerim 🙂

Toplam görüntülenme sayısı: 2239

11 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
23 Temmuz 2013

Oracle’ın Java SE Sertifikaları: OCA, OCP ve OCM

Akin Java, Java Dersleri certification, Java EE certification, Java Sertifika, OCA, OCM, OCP, Oracle Java Certifications, Oracle Sertifika, sertifika

Bu yazıda, Oracle’ın son değişikliklerinden sonra Java SE sertifika ve sınavlarının son halinden bahsedeceğim. Oncelikle Oracle’in Java eğitim ve sertifikalarıyla ilgili ana sayfasını not edin.

Malum, Oracle, Sun’ı satın aldıktan sonra Java ile ilgili pek çok değişikliğe gitti. Bunlardan bir tanesi de Java sertifikasyonu oldu. Sertifikasyonun yapısı ile ilgili sertifikaların isimleri değişti ve daha çok Oracle’ın sistemine uygun hale getirildi. En son yapılan değişikliklerle, Oracle’in Java SE sertifikaları, 3 katmanlı bir yapı halini aldı: Giriş seviyesinde OCA yani Oracle Certified Associate var, sonra eski yapıdaki Sun Certified Java Programmer’a karşılık gelen OCP yani Oracle Certified Programmer geliyor ve en sonda da OCM yani Oracle Certified Master var.

OracleJavaSECerts072013

Ayrıca bu üç katmanlı yapıya Java EE sertifikalarında özel teknolojiler için alınan OCE, Oracle Certified Expert ekleniyor.

Java SE sertifikalari arasında bağımlılıklar da var, OCA’in OCP olmak için, OCP’nin de OCM olmak için bir gereklilik olduğunu söylemeliyiz.

OCA’in amacı, en temel seviyedeki Java bilgisini oluşturmak. İlgili sınavın numarası 1Z0-803 ve ismi de Java SE 7 Programmer I. Sınav çoktan seçmeli 90 sorudan oluşuyor ve 140 dakika sürüyor. Sınavı geçmek için ise %77 başarı gerekli. Sınavın ücreti ise 426 TL. Java SE’nin 5 ve 6 sürümleri için de OCA sınavı var ama o sınavların soru sayısı vs. bilgileri daha farklı. Burada verdiğim bilgiler Java SE 7 sürümü için geçerlidir.

Java SE 7 Programmer I sınavının kapsadığı konular ise şunlardır:

Java Basics

  • Define the scope of variables
  • Define the structure of a Java class
  • Create executable Java applications with a main method
  • Import other Java packages to make them accessible in your code

Working With Java Data Types

  • Declare and initialize variables
  • Differentiate between object reference variables and primitive variables
  • Read or write to object fields
  • Explain an Object’s Lifecycle (creation, “dereference” and garbage collection)
  • Call methods on objects
  • Manipulate data using the StringBuilder class and its methods
  • Creating and manipulating Strings

Using Operators and Decision Constructs  

  • Use Java operators
  • Use parenthesis to override operator precedence
  • Test equality between Strings and other objects using == and equals ()
  • Create if and if/else constructs
  • Use a switch statement

Creating and Using Arrays

  • Declare, instantiate, initialize and use a one-dimensional array
  • Declare, instantiate, initialize and use multi-dimensional array
  • Declare and use an ArrayList

Using Loop Constructs

  • Create and use while loops
  • Create and use for loops including the enhanced for loop
  • Create and use do/while loops
  • Compare loop constructs
  • Use break and continue

Working with Methods and Encapsulation

  • Create methods with arguments and return values
  • Apply the static keyword  to methods and fields
  • Create an overloaded method
  • Differentiate between default and user defined constructors
  • Create and overload constructors
  • Apply access modifiers
  • Apply encapsulation principles to a class
  • Determine the effect upon object references and primitive values when they are passed  into methods that change the values

Working with Inheritance

  • Implement inheritance
  • Develop code that demonstrates the use of polymorphism
  • Differentiate between the type of a reference and the type of an object
  • Determine when casting is necessary
  • Use super and this to access objects and constructors
  • Use abstract classes and interfaces

Handling Exceptions

  • Differentiate among checked exceptions, RuntimeExceptions and Errors
  • Create a try-catch block and determine how exceptions alter normal program flow
  • Describe what Exceptions are used for in Java
  • Invoke a method that throws an exception
  • Recognize common exception classes and categories

OCA sertifikasını alan Javacının hedefi artık OCPdir. Sebebi ise OCA’in giriş seviyesinde bir sertifika olup, yukarıdaki içerikten de anlaşıldığı gibi, bir Java SE programcısının bilmesi gereken konuların hepsini kapsamadığı gerçeğidir. OCP ise yine çoktan seçmeli 90 tane sorudan oluşan ve 150 dakika süren, 1Z0-804 nolu ve Java SE 7 Programmer II isimli bir sınavı içermektedir. Başarı için %65 gereklidir ve fiyatı $245’dır. Java SE 7 Programmer II sınavının kapsamı, Java SE 7 Programmer I üzerine bina edilmektedir ve şu konuları içermektedir:

Java Class Design 
  • Use access modifiers: private, protected, and public
  • Override methods
  • Overload constructors and methods
  • Use the instanceof operator and casting
  • Use virtual method invocation
  • Override the hashCode, equals, and toString methods from the Object class to improve the functionality of your class.
  • Use package and import statements
Advanced Class Design 
  • Identify when and how to apply abstract classes
  • Construct abstract Java classes and subclasses
  • Use the static and final keywords
  • Create top-level and nested classes
  • Use enumerated types
Object-Oriented Design Principles 
  • Write code that declares, implements and/or extends interfaces
  • Choose between interface inheritance and class inheritance
  • Apply cohesion, low-coupling, IS-A, and HAS-A principles
  • Apply object composition principles (including has-a relationships)
  • Design a class using a Singleton design pattern
  • Write code to implement the Data Access Object (DAO) pattern
  • Design and create objects using a factory pattern
Generics and Collections
  • Create a generic class
  • Use the diamond for type inference
  • Analyze the interoperability of collections that use raw types and generic types
  • Use wrapper classes, autoboxing and unboxing
  • Create and use List, Set and Deque implementations
  • Create and use Map implementations
  • Use java.util.Comparator and java.lang.Comparable
  • Sort and search arrays and lists
String Processing 
  • Search, parse and build strings (including Scanner, StringTokenizer, StringBuilder, String and Formatter)
  • Search, parse, and replace strings by using regular expressions, using expression patterns for matching limited to: . (dot), * (star), + (plus), ?, \d, \D, \s, \S,  \w, \W, \b. \B, [], ().
  • Format strings using the formatting parameters: %b, %c, %d, %f, and %s in format strings.
Exceptions and Assertions 
  • Use throw and throws statements
  • Develop code that handles multiple Exception types in a single catch block
  • Develop code that uses try-with-resources statements (including using classes that implement the AutoCloseable interface)
  • Create custom exceptions
  • Test invariants by using assertions
Java I/O Fundamentals 
  • Read and write data from the console
  • Use streams to read from and write to files by using classes in the java.io package (including BufferedReader, BufferedWriter, File, FileReader, FileWriter, DataReader, ObjectOutputStream, ObjectInputStream, and PrintWriter)
Java File I/O (NIO.2) 
  • Operate on file and directory paths with the Path class
  • Check, delete, copy, or move a file or directory with the Files class
  • Read and change file and directory attributes, focusing on the BasicFileAttributes, DosFileAttributes, and PosixFileAttributes interfaces
  • Recursively access a directory tree using the DirectoryStream and FileVisitor interfaces
  • Find a file with the PathMatcher interface
  • Watch a directory for changes with the WatchService interface
Building Database Applications with JDBC 
  • Describe the interfaces that make up the core of the JDBC API (including the Driver, Connection, Statement, and ResultSet interfaces and their relationship to provider implementations)
  • Identify the components required to connect to a database using the DriverManager class (including the jdbc URL)
  • Submit queries and read results from the database (including creating statements, returning result sets, iterating through the results, and properly closing result sets, statements, and connections)
  • Use JDBC transactions (including disabling auto-commit mode, committing and rolling back transactions, and setting and rolling back to savepoints)
  • Construct and use RowSet objects using the RowSetProvider class and the RowSetFactory interface
  • Create and use PreparedStatement and CallableStatement objects
Threads 
  • Create and use the Thread class and the Runnable interface
  • Manage and control thread lifecycle
  • Synchronize thread access to shared data
  • Identify code that may not execute correctly in a multi-threaded environment.
Concurrency 
  • Use collections from the java.util.concurrent package with a focus on the advantages over and differences from the traditional java.util collections.
  • Use Lock, ReadWriteLock, and ReentrantLock classes in the java.util.concurrent.locks package to support lock-free thread-safe programming on single variables.
  • Use Executor, ExecutorService, Executors, Callable, and Future to execute tasks using thread pools.
  • Use the parallel Fork/Join Framework
Localization 
  • Read and set the locale by using the Locale object
  • Build a resource bundle for each locale
  • Call a resource bundle from an application
  • Format dates, numbers, and currency values for localization with the NumberFormat and DateFormat classes (including number format patterns)
  • Describe the advantages of localizing an application
  • Define a locale using language and country codes

Görüldüğü gibi, temel Java bilgisi ancak OCP ile sağlanmaktadır. Dolayısıyla OCA olmak, yazılım endüstrisinde çalışmak için yeterli olmamakla birlikte bir sürecin ilk adımı olup, devamının gelecek olması sebebiyle önemlidir. Belli ki Oracle, temel Java yetkinliğini, yerelleştirme, eş zamanlılık ve JDBC gibi konuları da içerecek şekilde, haklı olarak genişletmiş ama bu genişletmenin getirdiği yükü de, OCA ve OCP ile ikiye bölüp Javacılar için daha rahat hazmedilebilir hale getirmiştir.

OCPden sonraki hedef ise OCMdir yani “üstad” olmaktır 🙂 OCM olmak için çoktan seçmeli bir sınav yoktur, onun yerine, 1Z0-855 nolu bir programlama ya da geliştirme ödevi ile 1Z0-856 nolu bir makale yazımı vardır. Ayrıca OCM için, Oracle’in verdiği listeden bir tane eğitimi almış olmanız gereklidir.

Programlama ödevi 6 ayda tamamlanmalıdır ve kullanıcı arayüzü tasarımı ve geliştirmesiyle, ağ, protokol ve veri tabanı programlamasını içeren bir projedir. Yazılması gereken makale de benzer şekilde 6 ayda tamamlanmış olmalı ve programlama projesi sırasında aldığınız tasarım ve programlama kararlarınızı tartışmalıdır. Makalede, kararlarınızı alternatifleriyle birlikte değerlendirip, savunmanız beklenmektedir. Dolayısıyla, çok uzmanı olmasanız bile, UML gibi bir dil ile almış olduğunuz tasarım kararlarınızı ifade etmeniz beklenmektedir. Bu iki çalışmada tasarım şablonları, yazılım geliştirme süreci, birim testi vb. konularla ilgili yetkinlikleri de göstermeniz beklenmektedir. Fiyatı $245’er olan bu iki çıktıda başarılı olduğunuzda OCM’i hakettiniz demektir.

Java SE ile ilgili sertifikalar üzerine daha geniş bilgiyi buradan alabilirsiniz.

Unutmayın, sertifikalı bir Javacı, aynı tecrübedeki sertifikasız bir Javacıdan daha tercihe şayan bir durumdadır. Bu durum, ülkemiz için henüz tam olarak yaygınlaşmamış olsa bile pek çok yazılım evinde değer verilen bir noktadır. Yurt dışını düşünenler için ise kanımca çok daha önemlidir.

Bol sertifikalı Javacı görmek umuduyla 🙂

Toplam görüntülenme sayısı: 31812

57 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
06 Temmuz 2013

Java’ya Nasıl Başlarım? Java’yı Nasıl Öğrenirim? – V

Akin Java, Java Dersleri Java Öğren, Java öğreniyorum, Java öğrenmek, Java'ya nasil baslarim

“Java’ya Nasıl Başlarım? Java’yı Nasıl Öğrenirim?” dizisinin bu son olmasını arzulayıp da son olmayan yazısında :), en son bahsettiğimiz torbalar konusunu geride bırakıp ilerleyelim.

Giriş/Çıkış (Input/Output) ya da kısaltılmış haliyle G/Ç (I/O), temel Java’nın en korkutucu konularındandır. Ben de bu yüzden G/Ç konusuna, Java SE’nin ilgili yapılarının bulunduğu java.io paketini açıp, oradaki sınıfları, yukarıdan aşağıya, kafiyeli dizeleri olan bir şiir havasında okuyarak başlarım:

BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter
ByteArrayInputStream
ByteArrayOutputStream
CharArrayReader
CharArrayWriter
…

Biraz şaşkınlık, biraz da tedirginlik… Durumu açıklayan en güzel kelimeler sanırım bunlardır 🙂

Sonra da, korkulacak bir şeyin olmadığını, aslında, uzerine bir byte yazan ve bir byte okuyan iki metoda sahip son derece basit görünümlü bir sınıf ile halledilebilenecek olan G/Ç konusunun, neden böyle tonla ve isimleri birbirine benzeyen sınıfla karma-karışık 🙂 hale getirildiğini açıklarım. Tabiki burada da Java’nın birkaç soyutlaması soz konusudur ve bu soyutlamalar en başta anlatıldığında, G/Ç korkulu olmaktan çıkar. Bu konudaki tasarım şablonlarından (decorator, template-method gibi) bahsettikten sonra, dosyadan ve bellekten farklı okuma ve yazmaları farklı G/Ç akışları ya da stream ve reader/writer’larla gösteririm. Bu sırada ön-bellekli ya da buffered G/Ç’nin faydasını örneklendiririm. Sonrasında nesne serileştirmesi ve geri dönüşümünü (serialization ve de-serialization) ele alırım.

G/Ç konusunda ayrıca, main metoda geçilen parametreler, Properties sınıfı ile hem sistem özelliklerinin hem de kullanıcı tanımlı “.properties” dosyalarındaki özelliklerin yönetimini, java.lang.System sınıfındaki statik olan in, out ve err değişkenleri ve java.util.Scanner sınıfıyla konsol okumasını ve yazmasını ve C’deki gibi formatlı basımı gösteririm.

Görüldüğü gibi G/Ç konusu karmaşık görünmesine karşın düzgün ele alındığında tamamen anlaşılır ve zevkli bir hale gelir.

Sonrasında Java’nin Swing yapısıyla kullanıcı arayüzü programlama yapmak gelir. Açıkçası, ülkemizde eğitimler ezici çoğunlukla acil ve sıkıştırılmış olduğundan, bu konuya cok nadiren girebilirim. Aslında, Swing ile konsol uygulamalarının nadiren yazıldığını ben de çok iyi biliyorum. Bu gerçeğe rağmen Swing’i bir Java eğitiminde öğretmek istememin temelde bir kaç sebebi var: İlki, gözle görülür, estetik olarak anlamlı şeyleri programlama her zaman zevklidir. Bu şekilde, o ana kadar öğrenilen konuları pekiştirmek imkanı bulurum ben. Bu sebep zaten başlı başına önemlidir. Hatta eğer müşterime 3-5 günlük bir workshop çalışmasını da kabul ettirebilmişsem, süper olmuştur çünkü Swing’i bu workshopda da kullanabileceğim demektir. Swing’i ögretmekten kazanılan bir diger güzel şey ise,  kullanıcı arayüzü programlamasının, sistematik bir programlama yaklaşımını vurgulayacak şekilde güzel örneklere izin vermesidir, çünkü görebilmek çok şeyi kolaylaştırır. Neyi nesne değiskeni yaparım neyi yerel değisken olarak tutarımdan, arayüzlerin olay dinleyicileri (event listener) olarak kullanılmasına, iş mantığına geçişe  kadar pek çok noktada en iyi pratiklerden ve MVC gibi tasarım şablonundan bahseder, katılımcıların tartısmalarını sağlarım. Dolayısıyla, hiç kullanılmayacak bile olsa Swing’e zaman ayırabilmek çok faydalıdır.

Sonrasında kanalları (thread) kullanarak, çok kanallı programlama (multi-threaded programming) girerim. Önce işletim sistemlerindeki “işlem” (process) konusundan bahsederim. Bu arada her zaman yaptığım gibi “işlem nedir” diye sorarım ve her zmaanki gibi hiç bir doğru dürüst cevap alamam çünkü yurdumun yazılımcıları, genelde ne İşletim Sistemleri dersine girmişlerdir ne de o dersi veren hocalar zahmet edip dersi zevkli hale getirmeye çalışmışlardır. Bu yüzden geçen senelerin sorularıyla sınıfı geçen anlı-şanlı “Yazılım Mühendis”lerimiz bu soruya malesef cevap veremezler 🙁 Yine açıklamak bana düşer ve hem işlem hem de kanal kavramını kıyaslamalı olarak açıklar, çok işlemli işletim sistemlerinden (multiprocessing operating systems) ve çok işlemcili donanımlardan (multiprocessors) bahsederek, neden ve nasıl aynı anda birden fazla işlem yapmaya çalışırız sorusuna cevap ararım. Konu bu arada süper bilgisayarlara bile gelir ve oradan ilginç örneklerle konu daha da cazip hale getirilir 🙂

Kanal ya da thread oluşturmanın java.lang.Thread sınıfı ve java.lang.Runnable arayüzü ile nasıl yapıldığını, en temel Thread metotlarını, mesela start(), run(), sleep() vb. ve Thread hayat döngüsünü ayrıntılı olarak ele alırım. Thread önceliklendirmesini (prioritization) çok nefis görsel bir örnekle veririm. Bu arada artık makinalar çok çekirdekli olduğu için çok kanallı programlamanın mahiyeti de çoktan değişmiştir; bunlar da bu örnekle birlikte gündeme gelir. Hatta VisualVM gibi bir araç ile açılan kanalları ve CPU davranışını gösteririm. Böylece JVM ile ilgili de bazı şeyleri konuşmuş oluruz.

Sonrasında konu kanal kullanımının negatif taraflarına gelir ve aynı nesnenin durumunu değiştiren kanallardan bahsederim. Örnek oalrak da bir kac tane para yatıran bir kaç tane de para çeken kanala, aynı Account nesnesini geçerim. Normal şartlarda yani tek kanallı ortamda hiç bir problem olmayacakken, birden fazla kanalın bulunduğu ortamda Account nesnesinin sahip olduğu para miktarının negatife düştüğünü gören öğrenciden durumu izah etmesini isterim tabi. Buradan kanalların, nasıl içinde bulunduğu işlemin verilerini ortaklaşa kullanıldıgını ve bu durumun artıları yanında bu örnekteki gibi nasıl problemli noktalarının olduğunu anlatırım. Sonuçta geldiğimiz noktada synchronized anahtar kelimesini, race conditions ve  dead-lock kavramlarını açıklarım.

Kanallar ile ilgili en son ele aldıgım şey, kanal haberleşmesidir. java.lang.Object sınıfı üzerinde olan wait(), notify() ve notifyAll() metotlarını kullanarak iki kanalın, birbirlerinin yaptıkları hakkında haberdar olmalarını güzel bir örnekle anlatırım.

Bu yazıyı da daha fazla uzatmadan burada sonlandıralım. Sanırım bu dizi daha iki yazıya muhtaç. Onları da geciktirmeden yazmaya çalışacağım.

Bol Java’lı günler dilerim 🙂

 

Toplam görüntülenme sayısı: 4888

34 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
«< 51 52 53 54 55 >»

Günlüğüme Hoşgeldiniz

Bu günlükte, Yazılım Mühendisliği, Bilgi Teknolojileri, Java, kişisel gelişim ve zaman zaman da diğer konulardaki düşüncelerimi sizlerle paylaşacağım. Umarım beğenir ve hoşça vakit geçirirsiniz.

Her türlü düşüncenizi, yorum olsun, beğeni ya da eleştiri olsun, bana iletmenizi rica ediyorum sizden. Ayrıca bana akin@javaturk.org adresinden ya da Twitter'dan ulaşabilirsiniz. Videolarıma da buradan ulaşabilirsiniz.

Teşekkür ederim.

Akın Kaldıroğlu

Rahat Okumak İçin

A Decrease font size. A Reset font size. A Increase font size.

Sosyal Medya

  • Twitter
  • Facebook
  • LinkedIn
  • Youtube

Son Twitlerim

→ Takip Etmek İçin

Abone Olun

Emalinizi girerek yazılardan haberdar olun.
Loading

Son Yazılarım

  • Udemy Eğitimlerim Üzerine
  • (başlıksız)
  • Clean Code / Temiz Kod Eğitimi Udemy’de
  • Java ile Nesne-Merkezli Programlamaya Giriş Eğitimi Udemy’de
  • Selsoft Video Eğitimleri
  • Spring ile Kurumsal Yazılım Geliştirme
  • Corona Günlerinde Design Patterns
  • Corona Günlerinde Java
  • JDK 10 ve “var” Özelliği
  • Onur Özcan
  • Analist ve İş Bilgisi
  • Farklı Dillerin Bakış Açısıyla Nesne-Merkezli Programlama
  • Java Nedir?
  • Bilgi Teknolojilerinde Yetenek Yönetimi – II: Tanımlar ve Eleştiriler – I
  • Alelade Hikayeler – II: Bir Başka Performans Problemi

Yazı Kategorileri

Yazı Takvimi

Mart 2026
P S Ç P C C P
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
« May    

Yazı Arşivi

Blogroll

  • Binnur Kurt'un Günlüğü
  • Ender'in Java Blogu
  • Erdem Seherler
  • Kızımın Günlüğü
  • Kurumsal Java
  • Levent Karagöl
  • Levent'in Java Blogu
  • Mert Can Akkan’s java tips,options, news…
  • Yaşar Safkan
  • Yasin Saygılı
  • Yazı Dünyası

Yazı Etiketleri

analiz Bilmek C Desen design pattern EJB Eğitim Fortran Hibernate Java Java'ya nasil baslarim Java dersleri Java EE Java Persistence API Java SE Java Sertifika Java Öğren Java öğreniyorum Java öğrenmek JPA Kalıp Kurumsal Java nesne nesne-merkezli No Silver Bullet object object-oriented Oracle Java Certifications pattern performans programlama programlama dilleri programlama nedir sertifika singleton tasarım tasarım deseni tasarım desenleri tasarım şablonu yazılım yazılım geliştirme Yazılım Mühendisliği yazılımın doğası yazılımın zorlukları Şablon

↑

© Java Günlüğüm 2026
Powered by WordPress • Themify WordPress Themes
 

Yorumlar Yükleniyor...