{"id":38708,"date":"2026-02-06T02:00:42","date_gmt":"2026-02-05T23:00:42","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/"},"modified":"2026-02-06T02:00:42","modified_gmt":"2026-02-05T23:00:42","slug":"copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/","title":{"rendered":"Copilot SDK for Java 1.0.7: Oturum Ya\u015fam D\u00f6ng\u00fcs\u00fc Kancalar\u0131 ve Geli\u015fmi\u015f G\u00f6zlemlenebilirlik"},"content":{"rendered":"<h2>Copilot SDK for Java 1.0.7: Oturum Ya\u015fam D\u00f6ng\u00fcs\u00fc Kancalar\u0131 ve Geli\u015fmi\u015f G\u00f6zlemlenebilirlik<\/h2>\n<p>Copilot SDK for Java, geli\u015ftiricilere Microsoft Copilot&#8217;\u0131n g\u00fc\u00e7l\u00fc yapay zeka yeteneklerini Java uygulamalar\u0131na sorunsuz bir \u015fekilde entegre etme imkan\u0131 sunar. Uygulamalar\u0131n karma\u015f\u0131kl\u0131\u011f\u0131 artt\u0131k\u00e7a, entegre sistemlerin davran\u0131\u015flar\u0131n\u0131 anlamak, y\u00f6netmek ve hatalar\u0131 ay\u0131klamak kritik hale gelmektedir. S\u00fcr\u00fcm 1.0.7 ile birlikte gelen oturum ya\u015fam d\u00f6ng\u00fcs\u00fc kancalar\u0131 ve geli\u015fmi\u015f g\u00f6zlemlenebilirlik \u00f6zellikleri, bu zorluklar\u0131n \u00fcstesinden gelmek i\u00e7in sa\u011flam bir temel sunarak, daha kararl\u0131, y\u00f6netilebilir ve hata toleransl\u0131 yapay zeka destekli uygulamalar geli\u015ftirmenizi sa\u011flar. Bu makale, bu yeni yetenekleri derinlemesine inceleyecek ve pratik uygulama y\u00f6ntemlerini sunacakt\u0131r.<\/p>\n<h3>Copilot SDK for Java&#8217;ya Genel Bak\u0131\u015f<\/h3>\n<p>Copilot SDK for Java, geli\u015ftiricilerin do\u011fal dil i\u015fleme, kod tamamlama, i\u00e7erik \u00fcretimi gibi Copilot \u00f6zelliklerini kendi Java tabanl\u0131 uygulamalar\u0131na kolayca dahil etmelerini sa\u011flayan bir ara\u00e7 setidir. Bu SDK, karma\u015f\u0131k API \u00e7a\u011fr\u0131lar\u0131n\u0131 soyutlayarak, geli\u015ftiricilerin i\u015f mant\u0131\u011f\u0131na odaklanmas\u0131na olanak tan\u0131r.<\/p>\n<h4>SDK&#8217;n\u0131n Amac\u0131 ve Avantajlar\u0131<\/h4>\n<p>SDK&#8217;n\u0131n temel amac\u0131, yapay zeka entegrasyonunu basitle\u015ftirmektir. Geli\u015ftiriciler, Copilot&#8217;\u0131n sundu\u011fu yetenekleri kullanarak daha ak\u0131ll\u0131 IDE&#8217;ler, i\u00e7erik y\u00f6netim sistemleri, sohbet botlar\u0131 veya \u00f6zel i\u015f uygulamalar\u0131 olu\u015fturabilirler. Avantajlar\u0131 aras\u0131nda geli\u015ftirme s\u00fcresinin k\u0131salmas\u0131, hata oranlar\u0131n\u0131n d\u00fc\u015fmesi ve daha zengin kullan\u0131c\u0131 deneyimleri sunulmas\u0131 yer al\u0131r.<\/p>\n<h4>S\u00fcr\u00fcm 1.0.7 Yenilikleri: Kancalar ve G\u00f6zlemlenebilirlik<\/h4>\n<p>Copilot SDK for Java 1.0.7, \u00f6zellikle oturum ya\u015fam d\u00f6ng\u00fcs\u00fc kancalar\u0131 (Session Lifecycle Hooks) ve g\u00f6zlemlenebilirlik (Observability) yeteneklerini \u00f6n plana \u00e7\u0131kar\u0131r. Bu yenilikler, uygulamalar\u0131n Copilot ile olan etkile\u015fimlerini daha iyi izlemesini, y\u00f6netmesini ve hata durumlar\u0131nda proaktif aksiyonlar almas\u0131n\u0131 sa\u011flar. Bu sayede, entegrasyonlar\u0131n g\u00fcvenilirli\u011fi ve s\u00fcrd\u00fcr\u00fclebilirli\u011fi \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131lm\u0131\u015ft\u0131r.<\/p>\n<h4>Temel Bile\u015fenler<\/h4>\n<p>SDK&#8217;n\u0131n temel bile\u015fenleri aras\u0131nda <code>CopilotClient<\/code>, <code>CopilotSession<\/code> ve <code>CopilotRequest<\/code> gibi s\u0131n\u0131flar bulunur. <code>CopilotClient<\/code>, Copilot hizmetleriyle ba\u011flant\u0131 kurmak i\u00e7in kullan\u0131l\u0131rken, <code>CopilotSession<\/code>, belirli bir etkile\u015fimin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc y\u00f6netir. <code>CopilotRequest<\/code> ise Copilot&#8217;a g\u00f6nderilen istekleri temsil eder.<\/p>\n<h3>Oturum Ya\u015fam D\u00f6ng\u00fcs\u00fc Kancalar\u0131 Kavram\u0131<\/h3>\n<p>Oturum ya\u015fam d\u00f6ng\u00fcs\u00fc kancalar\u0131, bir oturumun belirli a\u015famalar\u0131nda (ba\u015flang\u0131\u00e7, biti\u015f, hata vb.) \u00f6zel kod par\u00e7ac\u0131klar\u0131n\u0131n \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131na olanak tan\u0131yan mekanizmalard\u0131r. Bu kancalar, uygulaman\u0131n oturumun durumu hakk\u0131nda bilgi sahibi olmas\u0131n\u0131 ve bu duruma g\u00f6re tepki vermesini sa\u011flar.<\/p>\n<h4>Kancalar\u0131n \u00d6nemi<\/h4>\n<p>Kancalar, uygulaman\u0131n oturum y\u00f6netimi s\u00fcre\u00e7lerine esneklik ve geni\u015fletilebilirlik katar. \u00d6rne\u011fin, bir oturum ba\u015flad\u0131\u011f\u0131nda belirli kaynaklar\u0131 ba\u015flatmak, oturum sona erdi\u011finde kaynaklar\u0131 temizlemek veya bir hata durumunda \u00f6zel bir bildirim g\u00f6ndermek i\u00e7in kullan\u0131labilirler. Bu, \u00f6zellikle uzun s\u00fcreli veya kritik oturumlar i\u00e7in hayati \u00f6nem ta\u015f\u0131r.<\/p>\n<h4>Tipik Oturum A\u015famalar\u0131<\/h4>\n<p>Bir oturumun tipik ya\u015fam d\u00f6ng\u00fcs\u00fc a\u015fa\u011f\u0131daki a\u015famalar\u0131 i\u00e7erir:<\/p>\n<ul>\n<li><strong>Ba\u015flang\u0131\u00e7:<\/strong> Oturumun ba\u015far\u0131yla olu\u015fturuldu\u011fu an.<\/li>\n<li><strong>Devam:<\/strong> Oturumun aktif oldu\u011fu ve isteklerin i\u015flendi\u011fi s\u00fcre\u00e7.<\/li>\n<li><strong>Biti\u015f:<\/strong> Oturumun normal \u015fekilde sonland\u0131r\u0131ld\u0131\u011f\u0131 an.<\/li>\n<li><strong>Hata:<\/strong> Oturum s\u0131ras\u0131nda beklenmedik bir durumun veya hatan\u0131n meydana geldi\u011fi an.<\/li>\n<\/ul>\n<p>Kancalar, bu kritik ge\u00e7i\u015f noktalar\u0131nda devreye girerek uygulaman\u0131n tutarl\u0131 bir \u015fekilde davranmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Mimari Faydalar\u0131<\/h4>\n<p>Kancalar, mod\u00fcler bir tasar\u0131m yakla\u015f\u0131m\u0131n\u0131 te\u015fvik eder. Oturum y\u00f6netimi ile ilgili yan etkileri (loglama, metrik toplama, kaynak temizleme) ana i\u015f mant\u0131\u011f\u0131ndan ay\u0131rarak, kodun daha temiz, anla\u015f\u0131l\u0131r ve bak\u0131m\u0131 kolay olmas\u0131n\u0131 sa\u011flar. Bu, &#8220;sorumluluklar\u0131n ayr\u0131lmas\u0131&#8221; prensibine uygun bir yakla\u015f\u0131md\u0131r.<\/p>\n<h3>Copilot SDK 1.0.7&#8217;de Ya\u015fam D\u00f6ng\u00fcs\u00fc Kancalar\u0131<\/h3>\n<p>Copilot SDK for Java 1.0.7, <code>SessionLifecycleListener<\/code> aray\u00fcz\u00fc arac\u0131l\u0131\u011f\u0131yla oturum ya\u015fam d\u00f6ng\u00fcs\u00fc kancalar\u0131n\u0131 sunar. Bu aray\u00fcz\u00fc uygulayarak, geli\u015ftiriciler oturumun farkl\u0131 a\u015famalar\u0131na \u00f6zel mant\u0131k ekleyebilirler.<\/p>\n<h4><code>SessionLifecycleListener<\/code> Aray\u00fcz\u00fc<\/h4>\n<p><code>SessionLifecycleListener<\/code> aray\u00fcz\u00fc, a\u015fa\u011f\u0131daki metotlar\u0131 tan\u0131mlar:<\/p>\n<ul>\n<li><code>onSessionStarted(CopilotSession session)<\/code>: Bir Copilot oturumu ba\u015far\u0131yla ba\u015flat\u0131ld\u0131\u011f\u0131nda \u00e7a\u011fr\u0131l\u0131r.<\/li>\n<li><code>onSessionEnded(CopilotSession session)<\/code>: Bir Copilot oturumu normal \u015fekilde sonland\u0131r\u0131ld\u0131\u011f\u0131nda \u00e7a\u011fr\u0131l\u0131r.<\/li>\n<li><code>onSessionFailed(CopilotSession session, Throwable cause)<\/code>: Bir Copilot oturumu s\u0131ras\u0131nda bir hata meydana geldi\u011finde \u00e7a\u011fr\u0131l\u0131r.<\/li>\n<\/ul>\n<p>Bu metotlar, ilgili oturum nesnesine ve hata durumunda hatan\u0131n kendisine eri\u015fim sa\u011flar.<\/p>\n<h4>Kancalar\u0131n Kaydedilmesi ve Kullan\u0131m\u0131<\/h4>\n<p>Bir <code>SessionLifecycleListener<\/code> uygulamas\u0131n\u0131 kaydetmek olduk\u00e7a basittir. <code>CopilotSession<\/code> nesnesi \u00fczerinden <code>addLifecycleListener()<\/code> metodu kullan\u0131l\u0131r:<\/p>\n<pre><code class=\"language-java\">\nimport com.microsoft.copilot.sdk.CopilotClient;\nimport com.microsoft.copilot.sdk.CopilotSession;\nimport com.microsoft.copilot.sdk.SessionLifecycleListener;\n\npublic class MyCopilotApp {\n\n    public static void main(String[] args) {\n        CopilotClient client = CopilotClient.builder().build(); \/\/ Client'\u0131 uygun \u015fekilde yap\u0131land\u0131r\u0131n\n        CopilotSession session = client.createSession();\n\n        session.addLifecycleListener(new SessionLifecycleListener() {\n            @Override\n            public void onSessionStarted(CopilotSession s) {\n                System.out.println(\"Oturum ba\u015flat\u0131ld\u0131: \" + s.getSessionId());\n                \/\/ Metrikleri art\u0131r, loglama yap\n            }\n\n            @Override\n            public void onSessionEnded(CopilotSession s) {\n                System.out.println(\"Oturum sona erdi: \" + s.getSessionId());\n                \/\/ Kaynaklar\u0131 temizle, oturum s\u00fcresini logla\n            }\n\n            @Override\n            public void onSessionFailed(CopilotSession s, Throwable cause) {\n                System.err.println(\"Oturum hatas\u0131: \" + s.getSessionId() + \", Hata: \" + cause.getMessage());\n                \/\/ Hata raporlama sistemine bildirim g\u00f6nder\n            }\n        });\n\n        \/\/ Oturumu kullanma \u00f6rnekleri\n        try {\n            \/\/ \u00d6rnek bir istek g\u00f6nderimi\n            \/\/ session.sendRequest(...); \n            System.out.println(\"Oturum aktif olarak kullan\u0131l\u0131yor...\");\n            Thread.sleep(2000); \/\/ Sim\u00fclasyon\n        } catch (Exception e) {\n            \/\/ Hata olu\u015ftu\u011funda onSessionFailed \u00e7a\u011fr\u0131l\u0131r\n            System.err.println(\"Uygulama hatas\u0131: \" + e.getMessage());\n        } finally {\n            session.close(); \/\/ Oturumu kapat, onSessionEnded \u00e7a\u011fr\u0131l\u0131r\n        }\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<h4>\u00d6rnek Senaryolar<\/h4>\n<p>Bu kancalar \u00e7e\u015fitli senaryolarda kullan\u0131labilir:<\/p>\n<ul>\n<li><strong>Kaynak Temizleme:<\/strong> <code>onSessionEnded<\/code> metodunda, oturumla ili\u015fkili a\u00e7\u0131k dosya kollar\u0131, veritaban\u0131 ba\u011flant\u0131lar\u0131 veya a\u011f kaynaklar\u0131 g\u00fcvenli bir \u015fekilde kapat\u0131labilir.<\/li>\n<li><strong>Kullan\u0131c\u0131 Bilgilendirme:<\/strong> Oturumun durumu hakk\u0131nda kullan\u0131c\u0131 aray\u00fcz\u00fcnde geri bildirim sa\u011flamak (\u00f6rn. \"Copilot oturumu ba\u015flat\u0131l\u0131yor...\", \"Oturum sona erdi.\").<\/li>\n<li><strong>Denetim ve G\u00fcvenlik:<\/strong> Oturum ba\u015flang\u0131\u00e7 ve biti\u015f zamanlar\u0131n\u0131 denetim kay\u0131tlar\u0131na i\u015fleyerek g\u00fcvenlik izlemesi yapmak.<\/li>\n<li><strong>Performans \u0130zleme:<\/strong> Oturumun ba\u015flang\u0131\u00e7 ve biti\u015f zamanlar\u0131n\u0131 kaydederek, oturum s\u00fcresi metriklerini hesaplamak.<\/li>\n<\/ul>\n<h3>Geli\u015fmi\u015f G\u00f6zlemlenebilirlik Mekanizmalar\u0131<\/h3>\n<p>G\u00f6zlemlenebilirlik, bir sistemin i\u00e7 durumunu d\u0131\u015far\u0131dan ne kadar iyi anlayabildi\u011fimiz anlam\u0131na gelir. Copilot SDK 1.0.7, ya\u015fam d\u00f6ng\u00fcs\u00fc kancalar\u0131yla birlikte g\u00f6zlemlenebilirli\u011fi art\u0131rmak i\u00e7in g\u00fc\u00e7l\u00fc yetenekler sunar.<\/p>\n<h4>Loglama Entegrasyonu<\/h4>\n<p>SDK, standart Java loglama \u00e7er\u00e7eveleriyle (\u00f6rn. SLF4J\/Logback) uyumlu \u00e7al\u0131\u015f\u0131r. Ya\u015fam d\u00f6ng\u00fcs\u00fc kancalar\u0131 i\u00e7inde yap\u0131lan loglamalar, uygulaman\u0131n Copilot etkile\u015fimlerinin detayl\u0131 bir kayd\u0131n\u0131 tutmaya yard\u0131mc\u0131 olur. Bu, \u00f6zellikle hata ay\u0131klama ve sorun giderme s\u00fcre\u00e7lerinde kritik \u00f6neme sahiptir.<\/p>\n<pre><code class=\"language-java\">\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\/\/ ... di\u011fer importlar\n\npublic class MyLoggingSessionListener implements SessionLifecycleListener {\n    private static final Logger logger = LoggerFactory.getLogger(MyLoggingSessionListener.class);\n\n    @Override\n    public void onSessionStarted(CopilotSession session) {\n        logger.info(\"Copilot oturumu ba\u015flat\u0131ld\u0131: {}\", session.getSessionId());\n    }\n\n    @Override\n    public void onSessionEnded(CopilotSession session) {\n        logger.info(\"Copilot oturumu sona erdi: {}\", session.getSessionId());\n    }\n\n    @Override\n    public void onSessionFailed(CopilotSession session, Throwable cause) {\n        logger.error(\"Copilot oturumu ba\u015far\u0131s\u0131z oldu: {}. Hata: {}\", session.getSessionId(), cause.getMessage(), cause);\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<h4>Metrik Toplama<\/h4>\n<p>Kancalar, oturumla ilgili metrikleri toplamak i\u00e7in ideal noktalard\u0131r. \u00d6rne\u011fin, <code>onSessionStarted<\/code> metodunda aktif oturum say\u0131s\u0131n\u0131 art\u0131rabilir, <code>onSessionEnded<\/code> metodunda azaltabilir ve <code>onSessionFailed<\/code> metodunda hata sayac\u0131n\u0131 art\u0131rabilirsiniz. Bu metrikler, Prometheus veya Micrometer gibi ara\u00e7larla toplanarak uygulaman\u0131n sa\u011fl\u0131k durumu hakk\u0131nda ger\u00e7ek zamanl\u0131 bilgiler sa\u011flar.<\/p>\n<p><strong>\u00d6rnek Metrikler:<\/strong><\/p>\n<ul>\n<li><code>copilot_active_sessions_total<\/code>: Anl\u0131k aktif Copilot oturumu say\u0131s\u0131.<\/li>\n<li><code>copilot_session_failures_total<\/code>: Toplam ba\u015far\u0131s\u0131z Copilot oturumu say\u0131s\u0131.<\/li>\n<li><code>copilot_session_duration_seconds<\/code>: Oturumlar\u0131n ortalama s\u00fcresi.<\/li>\n<\/ul>\n<h4>\u0130zleme (Tracing) Yetenekleri<\/h4>\n<p>OpenTelemetry gibi da\u011f\u0131t\u0131k izleme (distributed tracing) \u00e7\u00f6z\u00fcmleriyle entegrasyon, Copilot oturumlar\u0131 i\u00e7indeki \u00e7a\u011fr\u0131 ak\u0131\u015f\u0131n\u0131 izlemeye olanak tan\u0131r. Kancalar, izleme span'lar\u0131n\u0131 ba\u015flatmak veya sonland\u0131rmak i\u00e7in kullan\u0131labilir, b\u00f6ylece bir Copilot iste\u011finin uygulaman\u0131z i\u00e7inde ve Copilot hizmetlerinde nas\u0131l ilerledi\u011fini g\u00f6rselle\u015ftirebilirsiniz. Bu, performans darbo\u011fazlar\u0131n\u0131 ve hata kaynaklar\u0131n\u0131 tespit etmek i\u00e7in \u00e7ok de\u011ferlidir.<\/p>\n<h4>Hata Y\u00f6netimi ve Raporlama<\/h4>\n<p><code>onSessionFailed<\/code> kancas\u0131, hatalar\u0131 merkezi bir hata raporlama sistemine (\u00f6rn. Sentry, Bugsnag) bildirmek i\u00e7in m\u00fckemmel bir noktad\u0131r. Bu, geli\u015ftiricilerin sorunlardan an\u0131nda haberdar olmas\u0131n\u0131 ve proaktif bir \u015fekilde m\u00fcdahale etmesini sa\u011flar. Ayr\u0131ca, hatan\u0131n ba\u011flam\u0131n\u0131 (oturum kimli\u011fi, ilgili kullan\u0131c\u0131 bilgileri) eklemek, hata ay\u0131klama s\u00fcrecini h\u0131zland\u0131r\u0131r.<\/p>\n<h3>Kancalar\u0131n ve G\u00f6zlemlenebilirli\u011fin Pratik Uygulamas\u0131<\/h3>\n<p>Bu b\u00f6l\u00fcmde, kancalar\u0131 ve g\u00f6zlemlenebilirlik mekanizmalar\u0131n\u0131 ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanabilece\u011fimize dair daha fazla \u00f6rnek sunaca\u011f\u0131z.<\/p>\n<h4>Kancalarla Kaynak Y\u00f6netimi<\/h4>\n<p>Bir Copilot oturumu, arka planda \u00e7e\u015fitli kaynaklar\u0131 kullanabilir. \u00d6rne\u011fin, bir veritaban\u0131 ba\u011flant\u0131s\u0131 veya \u00f6zel bir cache yap\u0131s\u0131. <code>onSessionEnded<\/code> kancas\u0131, bu kaynaklar\u0131 oturum sona erdi\u011finde g\u00fcvenli bir \u015fekilde serbest b\u0131rakmak i\u00e7in kullan\u0131labilir. Bu, bellek s\u0131z\u0131nt\u0131lar\u0131n\u0131 \u00f6nler ve sistem kaynaklar\u0131n\u0131n verimli kullan\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-java\">\npublic class ResourceCleaningListener implements SessionLifecycleListener {\n    \/\/ ...\n    @Override\n    public void onSessionEnded(CopilotSession session) {\n        System.out.println(\"Oturum sona erdi, kaynaklar temizleniyor: \" + session.getSessionId());\n        \/\/ \u00d6rne\u011fin, \u00f6zel bir DB ba\u011flant\u0131s\u0131n\u0131 kapat\n        \/\/ databaseConnection.close();\n    }\n    \/\/ ...\n}\n<\/pre>\n<p><\/code><\/p>\n<h4>Kullan\u0131c\u0131 Deneyimi \u0130yile\u015ftirmeleri<\/h4>\n<p>Kullan\u0131c\u0131 aray\u00fcz\u00fcne sahip uygulamalarda, oturum durumu hakk\u0131nda anl\u0131k geri bildirim sa\u011flamak kullan\u0131c\u0131 deneyimini art\u0131r\u0131r. <code>onSessionStarted<\/code> ve <code>onSessionEnded<\/code> kancalar\u0131, UI'da \"Copilot ile ba\u011flant\u0131 kuruluyor...\" veya \"Copilot oturumu sona erdi.\" gibi mesajlar\u0131 g\u00f6stermek i\u00e7in kullan\u0131labilir.<\/p>\n<h4>Performans \u0130zleme<\/h4>\n<p>Oturumlar\u0131n ne kadar s\u00fcrd\u00fc\u011f\u00fcn\u00fc bilmek, performans analizleri i\u00e7in \u00f6nemlidir. <code>onSessionStarted<\/code> metodunda bir zaman damgas\u0131 kaydedip, <code>onSessionEnded<\/code> metodunda bu zaman damgas\u0131 ile mevcut zaman aras\u0131ndaki fark\u0131 hesaplayarak oturum s\u00fcresini \u00f6l\u00e7ebiliriz. Bu veriler daha sonra metrik sistemlerine g\u00f6nderilebilir.<\/p>\n<pre><code class=\"language-java\">\nimport java.time.Instant;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.concurrent.ConcurrentMap;\n\npublic class SessionDurationListener implements SessionLifecycleListener {\n    private final ConcurrentMap<String, Instant> sessionStartTimes = new ConcurrentHashMap<>();\n\n    @Override\n    public void onSessionStarted(CopilotSession session) {\n        sessionStartTimes.put(session.getSessionId(), Instant.now());\n    }\n\n    @Override\n    public void onSessionEnded(CopilotSession session) {\n        Instant startTime = sessionStartTimes.remove(session.getSessionId());\n        if (startTime != null) {\n            long durationMillis = Instant.now().toEpochMilli() - startTime.toEpochMilli();\n            System.out.println(\"Oturum s\u00fcresi (ms): \" + durationMillis + \" for session: \" + session.getSessionId());\n            \/\/ Metrik sistemine g\u00f6nder: copilot_session_duration_seconds\n        }\n    }\n\n    @Override\n    public void onSessionFailed(CopilotSession session, Throwable cause) {\n        sessionStartTimes.remove(session.getSessionId()); \/\/ Hata durumunda da ba\u015flang\u0131\u00e7 zaman\u0131n\u0131 temizle\n        System.err.println(\"Oturum hatas\u0131, s\u00fcre \u00f6l\u00e7\u00fcm\u00fc durduruldu: \" + session.getSessionId());\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<h3>En \u0130yi Uygulamalar ve Dikkat Edilmesi Gerekenler<\/h3>\n<p>Ya\u015fam d\u00f6ng\u00fcs\u00fc kancalar\u0131n\u0131 ve g\u00f6zlemlenebilirlik \u00f6zelliklerini kullan\u0131rken baz\u0131 en iyi uygulamalar\u0131 takip etmek, uygulaman\u0131z\u0131n performans\u0131n\u0131 ve kararl\u0131l\u0131\u011f\u0131n\u0131 art\u0131racakt\u0131r.<\/p>\n<h4>Kanca Mant\u0131\u011f\u0131n\u0131n Hafif Tutulmas\u0131<\/h4>\n<p>Kancalar i\u00e7inde \u00e7al\u0131\u015fan kodun m\u00fcmk\u00fcn oldu\u011funca h\u0131zl\u0131 ve hafif olmas\u0131 \u00f6nemlidir. Uzun s\u00fcren veya bloklay\u0131c\u0131 i\u015flemler, ana uygulaman\u0131n performans\u0131n\u0131 olumsuz etkileyebilir. E\u011fer karma\u015f\u0131k bir i\u015flem gerekiyorsa, bunu ayr\u0131 bir i\u015f par\u00e7ac\u0131\u011f\u0131nda veya asenkron bir g\u00f6rev olarak y\u00fcr\u00fctmeyi d\u00fc\u015f\u00fcn\u00fcn.<\/p>\n<h4>Hata Tolerans\u0131<\/h4>\n<p>Kancalar i\u00e7inde meydana gelen hatalar\u0131n, ana Copilot oturumunun i\u015fleyi\u015fini kesintiye u\u011fratmamas\u0131 sa\u011flanmal\u0131d\u0131r. Kanca metotlar\u0131 i\u00e7inde istisnalar\u0131 yakalay\u0131p uygun \u015fekilde loglamak, bu hatalar\u0131n uygulaman\u0131n genel kararl\u0131l\u0131\u011f\u0131n\u0131 etkilemesini engeller.<\/p>\n<h4>Asenkron \u0130\u015flemler<\/h4>\n<p>Metrik g\u00f6nderme, loglama veya d\u0131\u015f sistemlere bildirim g\u00f6nderme gibi uzun s\u00fcrebilecek i\u015flemler, kancalar i\u00e7inde do\u011frudan yap\u0131lmak yerine asenkron olarak i\u015flenmelidir. Bu, ana oturum i\u015f ak\u0131\u015f\u0131n\u0131n kesintisiz devam etmesini sa\u011flar. Java'daki <code>CompletableFuture<\/code> veya bir mesaj kuyru\u011fu sistemi bu t\u00fcr senaryolar i\u00e7in uygun olabilir.<\/p>\n<h4>Test Edilebilirlik<\/h4>\n<p>Kanca implementasyonlar\u0131n\u0131z\u0131n ve g\u00f6zlemlenebilirlik mant\u0131\u011f\u0131n\u0131z\u0131n birim ve entegrasyon testleriyle kapsaml\u0131 bir \u015fekilde test edildi\u011finden emin olun. Bu, beklenmedik davran\u0131\u015flar\u0131 ve hatalar\u0131 \u00fcretim ortam\u0131na ula\u015fmadan \u00f6nce tespit etmenize yard\u0131mc\u0131 olur.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Copilot SDK for Java 1.0.7 ile sunulan oturum ya\u015fam d\u00f6ng\u00fcs\u00fc kancalar\u0131 ve geli\u015fmi\u015f g\u00f6zlemlenebilirlik \u00f6zellikleri, yapay zeka destekli Java uygulamalar\u0131 geli\u015ftiren geli\u015ftiriciler i\u00e7in \u00f6nemli bir ad\u0131md\u0131r. Bu yetenekler, Copilot entegrasyonlar\u0131n\u0131n daha g\u00fcvenilir, y\u00f6netilebilir ve performansl\u0131 olmas\u0131n\u0131 sa\u011flar. Kancalar sayesinde oturumun her a\u015famas\u0131nda \u00f6zel mant\u0131k y\u00fcr\u00fctebilir, g\u00f6zlemlenebilirlik ara\u00e7lar\u0131yla uygulaman\u0131z\u0131n i\u00e7 durumunu derinlemesine anlayabilirsiniz. Bu \u00f6zelliklerin do\u011fru kullan\u0131m\u0131, hem geli\u015ftirme s\u00fcrecini kolayla\u015ft\u0131r\u0131r hem de son kullan\u0131c\u0131ya daha stabil ve kesintisiz bir deneyim sunar. Geli\u015ftiriciler olarak, bu yeni ara\u00e7lar\u0131 benimseyerek Copilot destekli uygulamalar\u0131m\u0131z\u0131n kalitesini bir \u00fcst seviyeye ta\u015f\u0131yabiliriz.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<h4>Oturum ya\u015fam d\u00f6ng\u00fcs\u00fc kancalar\u0131 ne i\u015fe yarar?<\/h4>\n<p>Oturum ya\u015fam d\u00f6ng\u00fcs\u00fc kancalar\u0131, bir Copilot oturumunun ba\u015flang\u0131c\u0131, biti\u015fi veya hata durumu gibi belirli a\u015famalar\u0131nda \u00f6zel kod \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131r. Bu, kaynak y\u00f6netimi, loglama, metrik toplama ve hata bildirimleri gibi yan etkileri y\u00f6netmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h4>Birden fazla <code>SessionLifecycleListener<\/code> kaydedebilir miyim?<\/h4>\n<p>Evet, bir <code>CopilotSession<\/code> nesnesine birden fazla <code>SessionLifecycleListener<\/code> kaydedebilirsiniz. Her bir listener, oturum olaylar\u0131 meydana geldi\u011finde s\u0131rayla \u00e7a\u011fr\u0131lacakt\u0131r.<\/p>\n<h4>Kancalarda olu\u015fan bir hata ana oturumu etkiler mi?<\/h4>\n<p>Kancalar i\u00e7inde olu\u015fan istisnalar, genellikle ana Copilot oturumunun i\u015fleyi\u015fini do\u011frudan kesintiye u\u011fratmamal\u0131d\u0131r. Ancak, kanca implementasyonlar\u0131n\u0131zda istisnalar\u0131 yakalay\u0131p loglamak, uygulaman\u0131z\u0131n genel kararl\u0131l\u0131\u011f\u0131 i\u00e7in en iyi uygulamad\u0131r.<\/p>\n<h4>G\u00f6zlemlenebilirlik i\u00e7in hangi ara\u00e7lar \u00f6nerilir?<\/h4>\n<p>Loglama i\u00e7in SLF4J\/Logback, metrik toplama i\u00e7in Micrometer ve Prometheus, da\u011f\u0131t\u0131k izleme i\u00e7in OpenTelemetry gibi end\u00fcstri standard\u0131 ara\u00e7lar Copilot SDK ile entegrasyon i\u00e7in olduk\u00e7a uygundur.<\/p>\n<h4>Bu \u00f6zellikler mevcut uygulamalar\u0131ma nas\u0131l entegre edilir?<\/h4>\n<p>Mevcut uygulamalar\u0131n\u0131za entegrasyon, <code>CopilotSession<\/code> nesnelerinizi olu\u015fturdu\u011funuz veya kulland\u0131\u011f\u0131n\u0131z noktalarda <code>addLifecycleListener()<\/code> metodunu \u00e7a\u011f\u0131rarak ger\u00e7ekle\u015ftirilir. Mevcut loglama ve metrik altyap\u0131n\u0131zla uyumlu \u00e7al\u0131\u015facak \u015fekilde listener'lar\u0131n\u0131z\u0131 tasarlayabilirsiniz.<\/p>\n","protected":false},"excerpt":{"rendered":"Copilot SDK for Java, geli\u015ftiricilerin do\u011fal dil i\u015fleme, kod tamamlama, i\u00e7erik \u00fcretimi gibi Copilot \u00f6zelliklerini kendi Java tabanl\u0131 uygulamalar\u0131na k&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1408],"tags":[],"class_list":{"0":"post-38708","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-java","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Copilot SDK for Java 1.0.7: Oturum Ya\u015fam D\u00f6ng\u00fcs\u00fc Kancalar\u0131 ve Geli\u015fmi\u015f G\u00f6zlemlenebilirlik - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Copilot SDK for Java 1.0.7: Oturum Ya\u015fam D\u00f6ng\u00fcs\u00fc Kancalar\u0131 ve Geli\u015fmi\u015f G\u00f6zlemlenebilirlik\" \/>\n<meta property=\"og:description\" content=\"Copilot SDK for Java, geli\u015ftiricilerin do\u011fal dil i\u015fleme, kod tamamlama, i\u00e7erik \u00fcretimi gibi Copilot \u00f6zelliklerini kendi Java tabanl\u0131 uygulamalar\u0131na k...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-05T23:00:42+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Copilot SDK for Java 1.0.7: Oturum Ya\u015fam D\u00f6ng\u00fcs\u00fc Kancalar\u0131 ve Geli\u015fmi\u015f G\u00f6zlemlenebilirlik\",\"datePublished\":\"2026-02-05T23:00:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/\"},\"wordCount\":1973,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Java\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/\",\"name\":\"Copilot SDK for Java 1.0.7: Oturum Ya\u015fam D\u00f6ng\u00fcs\u00fc Kancalar\u0131 ve Geli\u015fmi\u015f G\u00f6zlemlenebilirlik - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-05T23:00:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Copilot SDK for Java 1.0.7: Oturum Ya\u015fam D\u00f6ng\u00fcs\u00fc Kancalar\u0131 ve Geli\u015fmi\u015f G\u00f6zlemlenebilirlik\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Copilot SDK for Java 1.0.7: Oturum Ya\u015fam D\u00f6ng\u00fcs\u00fc Kancalar\u0131 ve Geli\u015fmi\u015f G\u00f6zlemlenebilirlik - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/","og_locale":"tr_TR","og_type":"article","og_title":"Copilot SDK for Java 1.0.7: Oturum Ya\u015fam D\u00f6ng\u00fcs\u00fc Kancalar\u0131 ve Geli\u015fmi\u015f G\u00f6zlemlenebilirlik","og_description":"Copilot SDK for Java, geli\u015ftiricilerin do\u011fal dil i\u015fleme, kod tamamlama, i\u00e7erik \u00fcretimi gibi Copilot \u00f6zelliklerini kendi Java tabanl\u0131 uygulamalar\u0131na k...","og_url":"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-05T23:00:42+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"12 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Copilot SDK for Java 1.0.7: Oturum Ya\u015fam D\u00f6ng\u00fcs\u00fc Kancalar\u0131 ve Geli\u015fmi\u015f G\u00f6zlemlenebilirlik","datePublished":"2026-02-05T23:00:42+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/"},"wordCount":1973,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Java"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/","url":"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/","name":"Copilot SDK for Java 1.0.7: Oturum Ya\u015fam D\u00f6ng\u00fcs\u00fc Kancalar\u0131 ve Geli\u015fmi\u015f G\u00f6zlemlenebilirlik - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-05T23:00:42+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/copilot-sdk-for-java-1-0-7-oturum-yasam-dongusu-kancalari-ve-gelismis-gozlemlenebilirlik\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Copilot SDK for Java 1.0.7: Oturum Ya\u015fam D\u00f6ng\u00fcs\u00fc Kancalar\u0131 ve Geli\u015fmi\u015f G\u00f6zlemlenebilirlik"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=38708"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38708\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38708"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38708"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}