{"componentChunkName":"component---src-templates-post-js","path":"/aem-on-apple-silicon/","result":{"data":{"mdx":{"id":"2451aab7-e5ea-5d50-9bf3-7c270a20d9f6","body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"AEM Development on Apple Silicon\",\n  \"date\": \"2020-12-01T00:00:00.000Z\",\n  \"featuredImage\": \"M1.png\",\n  \"thumbnail\": \"M1-thumb.png\",\n  \"caption\": \"Neofetch on my new M1 MacBook Air\",\n  \"description\": \"There are pros and cons to being an early adopter of Apple's newest hardware, but there are mostly pros, even if you opt for the M1 MacBook Air.\",\n  \"published\": true\n};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", null, \"So I got one of those newfangled M1 Macs...\"), mdx(\"p\", null, \"Both the MacBook Air and Pro got some great reviews, with the former as a fanless ultrabook that spanks \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"most laptops that exist\"), \" in benchmarks. I was in desparate need for a device that could be used to get my work done in a room besides the office which doubles as a playroom for our 4.5-year-old twins. Work from home has led to some interesting daily habits that are worth another post entirely. \"), mdx(\"p\", null, \"I digress: I ended up with a space-gray MacBook Air with 16 GB of RAM. It's so dang fast at everything! As with any bleeding-edge technology, I was a bit unsure how my workflow would adapt to the new platform. Fortunately, many of the tools I use every day as a developer have already been ported to the new Apple chips, and the others run in x86 emulation without any perceptible lag. In other words, with a tiny bit of research, I was able to get Adobe Experience Manager and Node up running quickly, \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"and fast\"), \". Here's what I had to do for AEM:\"), mdx(\"h3\", null, \"Java\"), mdx(\"p\", null, \"Most of the projects I touch at Jefferson rely on JDK 8. The kind folks at \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://www.azul.com\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow noopener noreferrer\"\n  }), \"Azul\"), \" have already ported their Zulu OpenJDK for Apple Silicon (labeled as AArch64). It can be dowloaded for free from \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://www.azul.com/downloads/zulu-community/?package=jdk\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow noopener noreferrer\"\n  }), \"https://www.azul.com/downloads/zulu-community/?package=jdk\")), mdx(\"p\", null, \"Once installed, you have to set the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"$JAVA_HOME\"), \" variable to the correct path in your \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"~/.zshrc\"), \" or \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"~/.bash\"), \" file as such:\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-shell\"\n  }), \"# ~/.zshrc\\n\\nJAVA_HOME=/Library/Java/JavaVirtualMachines/zulu8.50.0.1017-ca-jdk8.0.275-macos_aarch64\\nexport JAVA_HOME;\\n\")), mdx(\"h3\", null, \"Homebrew\"), mdx(\"p\", null, \"I've found Homebrew the best way to install Maven on a Mac. I highly recommend reading Sam Soffes' blog post, \", mdx(\"em\", {\n    parentName: \"p\"\n  }, mdx(\"a\", _extends({\n    parentName: \"em\"\n  }, {\n    \"href\": \"https://soffes.blog/homebrew-on-apple-silicon\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow noopener noreferrer\"\n  }), \"Homebrew on Apple Silicon\")), \", if you intend to go this route.\"), mdx(\"h3\", null, \"Maven\"), mdx(\"p\", null, \"At the time of this writing, Apache Maven doesn't yet run under the M1 chip natively, but it's pretty simple to install Maven running on Rosetta 2 via Homebrew. \"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-console\"\n  }), \"arch -x86_64 brew install maven\\n\")), mdx(\"p\", null, \"Anecdotally, Maven emulated on Rosetta 2 building projects for Java running on AArch64 is slightly \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"faster\"), \" than doing the same task in Ubuntu running within WSL 1 on my Ryzen 3700x Windows 10 PC. The projects I typically work on for Jefferson shaved a few seconds off their build time in this environment. \\uD83D\\uDC4D\"), mdx(\"h3\", null, \".jar Files in Big Sur\"), mdx(\"p\", null, \"One \\\"gotcha\\\" I ran into running these versions of Open JDK on Big Sur is that the usual way of starting AEM, double-clicking on the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"AEM_6.5_Quickstart.jar\"), \" file, doesn't do much of anything. \\\"The operating couldn't be completed. Unable to locate a Java Runtime.\\\" Java isn't installed on this machine by default and I haven't yet figured out how to get macOS to point to my Zulu OpenJDK install. I was able to get around this by running the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \".jar\"), \" from the command line. Navigating to the folder or typing the entire path can become tedious so I set an alias to AEM quickstart in my \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"~/.zshrc\"), \" file. Unless there is a workaround for launching the GUI version, this is how I'm going to be firing up my local AEM instance on the M1.\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-shell\"\n  }), \"# ~/.zshrc\\n\\nalias aem='java -jar /Users/burgbits/AEM/6.5/AEM_6.5_Quickstart.jar'\\n\")), mdx(\"h3\", null, \"Conclusion, for now\"), mdx(\"p\", null, \"With native Apple Silicon versions of my favorite tools on the way, like VS Code, Node.js, and Adobe Photoshop, what is already a great development experience can only improve as they already run pretty great in Rosetta 2. At this point, I don't use Docker much, but I understand that it doesn't work at all on M1 Macs yet. Also, I don't know if that's a software or hardware thing, but there is no native support for more than one external monitor. Your mileage may vary, but there are really no deal breakers for my setup and I fully recommend these machines for most people. \\uD83D\\uDE01\\uD83D\\uDCBB\"));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"title":"AEM Development on Apple Silicon","date":"Tuesday, December 1, 2020","description":"There are pros and cons to being an early adopter of Apple's newest hardware, but there are mostly pros, even if you opt for the M1 MacBook Air.","caption":"Neofetch on my new M1 MacBook Air","featuredImage":{"childImageSharp":{"sizes":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsSAAALEgHS3X78AAAC+klEQVQ4y02TS4/bZBiFP9vxJXauk6udZJJMEjtO4lwnM5O0TEsREpRLJQRiJi3doLKAf4BY8V9YsGLNlrZigcSWFRs2/IyHN54idXHk77X1HZ33nGPlqhsK2nMWwc9cxb+zG78SvGb/Bsd5H79O8fb5//kqesVl+BsXo5ecD16icuopleIV8fgxy8lXJOENs/jAYvGMZHZLMj2QjA/Molsmoy+ZhbfpOYkOTKMbFsktcfQpyehHLqM/UTX1HRltjDKKZNtVjEKZctFnutzSGy6p+xH5XI+M0cTM+JjHp+BubmLbLTKZIkHtGffnfx0Vfk7BGTJfFbl4J6AXV/AbVTbJlmHvPoVchCvfXWdAVuC+hbt5hJVp0G58zfX6b5SlHlG3B3zSbPJF84xdviOEJ8yTiDjck3d7ZK0OttHCsboCme3+HY6EWSG0Gpy2vuHRvX9RWfUBph4QFnYsTp4QetcE9TKr5VR8XdGsD4W0haXLekaAk+m8wSlZs4drDURhnc7JCx6O/0EV1QsM1UMpXVARZCk5eS5XMZP4Oc3TgbyzUt8s3cfWRK064jSFI3czqkpTO7BVfxwVPqGcv4ff7dEK+nQ7Y5E/Ev/G9LtbAj/BMQNssybr+rh2B8/s4xn99FnKDch7LVrWUzZKamOqh7LWjs3FniRZM52sCUcLonBDv7OW9dfUK5GE41Pw2pK4nxIU3T7l3IhaaUy13KPt3LBUv6I0dUalOme22TGOFoTDcyHaUilM8Bzxyi5j6K7YUhCvK1KxsqxeEz/vLHClNrZVoWF8RqJ+QemqS9CYc73/iMvNY642H7Ndf8h0uhHFC0l7K0Xf0mkPU5V5T5TmAkqFtgQSYKlAPCxTMh4w0X86KmwI4ZLz1Xsk8TXL2bus1ishOq4tisMJw8FECuxJOBqactOQdFXClDBsrSnqPVHbp21+L4SakTZdlz/FM8W3/A90it9SsneS4lAunwiJ/CFaXy5JRfQzMno7haNPcbUlliYl1y7k/D7/AaTXa8+JHQmfAAAAAElFTkSuQmCC","aspectRatio":1.5037593984962405,"src":"/static/5355dd7c304957537952dfd85e8c6521/bc8e0/M1.png","srcSet":"/static/5355dd7c304957537952dfd85e8c6521/8ac63/M1.png 200w,\n/static/5355dd7c304957537952dfd85e8c6521/3891b/M1.png 400w,\n/static/5355dd7c304957537952dfd85e8c6521/bc8e0/M1.png 800w,\n/static/5355dd7c304957537952dfd85e8c6521/6050d/M1.png 1200w,\n/static/5355dd7c304957537952dfd85e8c6521/00405/M1.png 1600w,\n/static/5355dd7c304957537952dfd85e8c6521/1f96e/M1.png 2400w","srcWebp":"/static/5355dd7c304957537952dfd85e8c6521/ccdb5/M1.webp","srcSetWebp":"/static/5355dd7c304957537952dfd85e8c6521/6b183/M1.webp 200w,\n/static/5355dd7c304957537952dfd85e8c6521/fc32b/M1.webp 400w,\n/static/5355dd7c304957537952dfd85e8c6521/ccdb5/M1.webp 800w,\n/static/5355dd7c304957537952dfd85e8c6521/9000d/M1.webp 1200w,\n/static/5355dd7c304957537952dfd85e8c6521/e0075/M1.webp 1600w,\n/static/5355dd7c304957537952dfd85e8c6521/83a9d/M1.webp 2400w","sizes":"(max-width: 800px) 100vw, 800px"}}},"thumbnail":{"childImageSharp":{"sizes":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAACoklEQVQoz02SPY/jVBSG743t2I6dOJ8eZ/KdiSeTDzvfmSRDZhjtFovENqy2Wml/AaJZrfgRFMyCREWHRI1EQ0UDAomCAjokOv7Hw8nQUDw691r3vn7Pe48q6tfU1Fvy9j2zwRt2yZfsk3fs5iceuJ59zi59YD+TfSI1fcdh9sUj+9kD2+QzVldfsbn8me3lryhDp1TVx3jWNXYhpNhp4hUjWp2Y4XRJqz+mXh9S8Fv4XpP8CVnnvRZBIJTOqJV3bEc/cZj+gVKZNp56jmcs6V3mmdxEhJ0ScbfLavZEDs9w7D5O9v/0/sPqkzWaFP0b6eo3jvO/UJZeklVHAmvKB1HIi6hHWohotmskkwWNKMG1WnK5KXRw7a7Qw3X65NwBjtOiXDxy3P7J/eEflK8/wlcvsTI9+t6SpPicXm5Jv1tlu9kTDxbSXoRt1rGNcxxTxI02riniZk++NSjlbjh0f+e2/zfK1DM8EbX19tS/EAgu7VJAfHXH4OJ92WcxVBVLi6huYau2IMJSnUydQO7O1Q+s1S8imJljqTvK/hOGk4RhPGE0nBNfjIWUbnNNqTAk50R4ruA0yDtdCpJr4F5QzHeouQdS/R0L9SMqkwnl7ynl4JrNzR1JMmd0teBysKZVXxBWxpSKLcmtimdHIhySk+rbHYpen0qpR+jtmahvSdX3J0EHrWoyFkPW6zvm6S3z6VNG8S31KOa83uEsFBeVtpw5xxeXgd+UdVPaP5fuahLZlJH++lFUBE0ySmaplHI8fMh6/pTN6p7dThxvtqxWW3mc94jOGpKlhaF9wZM8yzIdoQhWMHWNpvUpY/3NSVCjtIGdreB5IWXvwKD6CY3qM8lpjGWcYRpViaUuF8WRPIqhw8fq6itx2SOrY3H5jLL5in8BQMcxw9JERhIAAAAASUVORK5CYII=","aspectRatio":1.834862385321101,"src":"/static/2fab4b1da394a3bcfa9ac1d705df9d82/4e34f/M1-thumb.png","srcSet":"/static/2fab4b1da394a3bcfa9ac1d705df9d82/8ac63/M1-thumb.png 200w,\n/static/2fab4b1da394a3bcfa9ac1d705df9d82/3891b/M1-thumb.png 400w,\n/static/2fab4b1da394a3bcfa9ac1d705df9d82/4e34f/M1-thumb.png 660w","srcWebp":"/static/2fab4b1da394a3bcfa9ac1d705df9d82/2194e/M1-thumb.webp","srcSetWebp":"/static/2fab4b1da394a3bcfa9ac1d705df9d82/6b183/M1-thumb.webp 200w,\n/static/2fab4b1da394a3bcfa9ac1d705df9d82/fc32b/M1-thumb.webp 400w,\n/static/2fab4b1da394a3bcfa9ac1d705df9d82/2194e/M1-thumb.webp 660w","sizes":"(max-width: 660px) 100vw, 660px"}}}}}},"pageContext":{"id":"2451aab7-e5ea-5d50-9bf3-7c270a20d9f6"}},"staticQueryHashes":["284470141","3649515864","63159454"]}