Observability of the Java Virtual Machine

Image
The JVM is one of the most observable runtimes. It provides us lots of tools for troubleshooting a JVM application in production. 1. Thread observability Threads are how the JVM actually does work. When something is wrong in production, the symptom is almost always a thread: stopped, blocked, leaking etc. Thread dumps work on any JVM with no  instrumentation, no agents, no restarts. <Example project link with /threaddump endpoint>         // (1) Deadlock — two threads grab the same pair of locks in opposite order.         new Thread(() -> grab(LOCK_A, LOCK_B), "deadlock-A-then-B").start();         new Thread(() -> grab(LOCK_B, LOCK_A), "deadlock-B-then-A").start(); http://localhost:8080/actuator/threaddump To list the JVMS, we can use the command below. PS C:\observe-jvm> jps -lv 25296 jdk.jcmd/sun.tools.jps.Jps -Dapplication.home=C:\Program Files\Microsoft\jdk-21.0.3.9-hotspot -Xms8m -Djdk.module.main=...

Kaynak Kod Versiyonlama Sistemleri ve Subversion

Üzerinde çalıştığımız projenin kaynak kodlarını ve kodda yapılan her türlü değişiklikleri depolayan yazılım sistemlerine "kaynak kod versiyonlama sistemleri" diyoruz. Bu alandaki ürünlere baktığımızda açık kaynak kodlu projelerden CVS ve Subversion, ticari ürünlerden ise Clearcase ve Visual SourceSafe sayılabilir. Versiyonlama sistemi kullanımı özellikle birden fazla geliştiricinin çalıştığı projelerde elzemdir. Maalesef ülkemizde halen versiyonlama sistemi kullanmayan firmalar olduğuna şahit olmaktayız. Fakat genellikle yaygın olarak kullanılmaktalar. Hatta bazı firmalar ilanlarında, bir geliştiricilerde aradıkları özelliklere şunu ekliyorlar:
- Düzenli check-out / check-in yapabilecek...

Visual Studio ile tümleşik çalışan Visual SourceSafe, kullanımı çok kolay bir yazılım. Biz, Java tarafındaki Subversion sistemine bir göz atalım:

Eğer Eclipse geliştirme ortamını kullanıyorsak, Subversion için bir eklenti mevcut. "Subclipse" adındaki bu eklentiyi Eclipse'in menülerinden Help->Software seçeneğini kullanarak indirebiliriz.
Subversion ile çalışırken ilk yapmamız gereken şey bir depo (repository) oluşturmak. Bunu komut satırından aşağıdaki şekilde yapabiliriz:

svnadmin create d:\svn_repository\my_new_repository

Böylece "my_new_repository" isminde bir depo oluşturmuş olduk. Eclipse ortamında oluşturduğumuz bir projeyi bu depoya nasıl ekleyeceğiz? Bunun için Eclipse perspektiflerinden "SVN Repository Exploring" perspektifini açmalıyız. (Window->Open Perspective)
Burada farenin sağ tuşuna tıklayarak "New->Repository Location" seçilmeli.
Url kısmına bizim örneğimizde aşağıdaki yer ismini yazmalıyız:

file://localhost/svn_repository/my_new_repository

Depo yaratıldıktan sonra "Package Explorer" görüntüsünden (view), depoya eklemek istediğimiz projeye sağ tıklayarak: Team -> Share Project seçilir.
Artık Subversion sistemini Eclipse sayesinde görsel olarak kullanabiliriz.

Proje geliştirirken yapacağımız tipik işlemleri "Team" menüsünden gerçekleştirebiliriz.

Comments

Popular posts from this blog

The WeakReference class, monitoring memory leak and garbage collection in a Java application

Simplescalar Simulator - Part 2: sim-outorder.c

Notes on Java Performance