{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "chem-bla-ics",
  "description": "Chemblaics (pronounced chem-bla-ics) is the science that uses open science and computers to solve problems in chemistry, biochemistry and related fields.",
  "home_page_url": "https://chem-bla-ics.linkedchemistry.info/",
  "feed_url": "https://chem-bla-ics.linkedchemistry.info/2010/10/27/cdk-12-to-14-api-changes-1-creating.json",
  "icon": "https://chem-bla-ics.linkedchemistry.info/assets/images/chem-bla-ics_logo.png",
  "language": "en",
  "authors": [
    {
      "name": "Egon Willighagen",
      "url": "https://orcid.org/0000-0001-7542-0286",
      "_orcid": "0000-0001-7542-0286"
    }
  ],
  "items": [

    {
      "id": "https://doi.org/10.59350/rvgrt-8b910",
      "url": "https://chem-bla-ics.linkedchemistry.info/2010/10/27/cdk-12-to-14-api-changes-1-creating.html",
      "title": "CDK 1.2 to 1.4 API changes #1: creating objects with an IChemObjectBuilder",
      "content_html": "<p>Later this year (planned) a new stable branch of the CDK library will be released.\nTime to look at some API changes, to ease migration. In this first post of the\nseries, I will show how the IChemObjectBuilder functionality has changed.</p>\n\n<p><strong>CDK 1.2 code</strong></p>\n\n<div class=\"language-java highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"nc\">IChemObjectBuilder</span> <span class=\"n\">builder</span> <span class=\"o\">=</span>\n  <span class=\"nc\">DefaultChemObjectBuilder</span><span class=\"o\">.</span><span class=\"na\">getInstance</span><span class=\"o\">();</span>\n<span class=\"nc\">IMolecule</span> <span class=\"n\">molecule</span> <span class=\"o\">=</span> <span class=\"n\">builder</span><span class=\"o\">.</span><span class=\"na\">newMolecule</span><span class=\"o\">();</span>\n<span class=\"n\">molecule</span><span class=\"o\">.</span><span class=\"na\">addAtom</span><span class=\"o\">(</span><span class=\"n\">builder</span><span class=\"o\">.</span><span class=\"na\">newAtom</span><span class=\"o\">(</span><span class=\"s\">\"C\"</span><span class=\"o\">));</span>\n</code></pre></div></div>\n\n<p><strong>CDK 1.4 code</strong></p>\n\n<div class=\"language-java highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"nc\">IChemObjectBuilder</span> <span class=\"n\">builder</span> <span class=\"o\">=</span>\n  <span class=\"nc\">DefaultChemObjectBuilder</span><span class=\"o\">.</span><span class=\"na\">getInstance</span><span class=\"o\">();</span>\n<span class=\"nc\">IMolecule</span> <span class=\"n\">molecule</span> <span class=\"o\">=</span> <span class=\"n\">builder</span><span class=\"o\">.</span><span class=\"na\">newInstance</span><span class=\"o\">(</span>\n  <span class=\"nc\">IMolecule</span><span class=\"o\">.</span><span class=\"na\">class</span>\n<span class=\"o\">);</span>\n<span class=\"n\">molecule</span><span class=\"o\">.</span><span class=\"na\">addAtom</span><span class=\"o\">(</span>\n  <span class=\"n\">builder</span><span class=\"o\">.</span><span class=\"na\">newInstance</span><span class=\"o\">(</span><span class=\"nc\">IAtom</span><span class=\"o\">.</span><span class=\"na\">class</span><span class=\"o\">,</span> <span class=\"s\">\"C\"</span><span class=\"o\">)</span>\n<span class=\"o\">);</span>\n</code></pre></div></div>\n\n<p>Now, please note that the <em>builder.newInstance()</em> method may actually return\nnull. This is not the case for the <a href=\"https://cdk.github.io/cdk/latest/docs/api/org/openscience/cdk/DefaultChemObjectBuilder.html\">DefaultChemObjectBuilder <i class=\"fa-solid fa-recycle fa-xs\"></i></a>,\nor the <a href=\"https://cdk.github.io/cdk/latest/docs/api/org/openscience/cdk/nonotify/NoNotificationChemObjectBuilder.html\">NoNotifiationChemObjectBuilder <i class=\"fa-solid fa-recycle fa-xs\"></i></a>,\nbut future releases may have dedicated builders that do have such functionality.\nHowever, these builder would not supposed to be used for building molecules\nanyway.</p>\n\n<p>The general patterns of <em>newInstance()</em> calls is that the first argument is\nthe interface for which you want an instance. All further parameters are passed\nas parameters for the object’s constructor. The builder maps the input to appropriate\nclass constructors. To know what parameters you can pass when instantiating\nan IAtom with the DefaultChemObjectBuilder, you would look at the constructor\nof <a href=\"https://cdk.github.io/cdk/latest/docs/api/org/openscience/cdk/Atom.html\">Atom <i class=\"fa-solid fa-recycle fa-xs\"></i></a>.\nTherefore, we can also call:</p>\n\n<div class=\"language-java highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"nc\">IAtom</span> <span class=\"n\">atom</span> <span class=\"o\">=</span> <span class=\"n\">builder</span><span class=\"o\">.</span><span class=\"na\">newInstance</span><span class=\"o\">(</span>\n  <span class=\"nc\">IAtom</span><span class=\"o\">.</span><span class=\"na\">class</span><span class=\"o\">,</span> <span class=\"s\">\"C\"</span><span class=\"o\">,</span> <span class=\"k\">new</span> <span class=\"nc\">Point2d</span><span class=\"o\">(</span><span class=\"mi\">0</span><span class=\"o\">,</span><span class=\"mi\">0</span><span class=\"o\">)</span>\n<span class=\"o\">);</span>\n</code></pre></div></div>",
      "summary": "Later this year (planned) a new stable branch of the CDK library will be released. Time to look at some API changes, to ease migration. In this first post of the series, I will show how the IChemObjectBuilder functionality has changed.",
      
      "date_published": "2010-10-27T00:00:00+00:00",
      "date_modified": "2026-10-04T00:00:00+00:00",
      "tags": ["cdk","cheminf","java"],
      
      
      
      
      
      
        "authors": [ { "name": "Egon Willighagen", "url": "https://orcid.org/0000-0001-7542-0286" } ]
      
    }

  ]
}
