Sounds like your IAC is dirty or is going bad. I removed mine and cleaned it a while back with choke cleaner. It worked ok for a few more weeks then went back to rough starts. The IAC or Idle Air Controler is basically a motor with a finger that goes in and out of the throttle body to allow more or less air to flow. At Startup, or when you turn on your AC it puts added load on your engine, the IAC increases airflow to accomodate. My IAC wasn't throwing up an engine code, yet now that I've replaced it with a new unit, the Jeep runs Much better.
PS - My rig only has 20,000 miles on it, but I take it off-road nearly every weekend which may have caused my IAC to wear out early.